Ruby on rails Activerecord:按祖父母值查找记录

Ruby on rails Activerecord:按祖父母值查找记录,ruby-on-rails,activerecord,active-record-query,Ruby On Rails,Activerecord,Active Record Query,我有以下型号: class GrandParent < ActiveRecord::Base has_many :parents has_many :children, through: :parents end class Parent < ActiveRecord::Base has_many :children belongs_to :grand_parent end class Child < ActiveRecord::Base belongs

我有以下型号:

class GrandParent < ActiveRecord::Base
  has_many :parents
  has_many :children, through: :parents
end

class Parent < ActiveRecord::Base
  has_many :children
  belongs_to :grand_parent
end

class Child < ActiveRecord::Base
  belongs_to :parent
end

您需要加入介于两者之间的模型,以便能够引用祖父母,因此您必须先加入父母,然后进行筛选

Child.joinsparent:[:grand\u parent]。其中“grand\u parents.value为TRUE”

不过,只是为了验证,值是grand_parents表上的实际列,还是您只想获取具有关联grand_parents的所有子级

如果是的话

Child.joinsparent:[:grand_parent]应该可以

如果要获取所有没有关联grand_父对象的子对象,可以执行以下操作

Child.joins:parent.where'not exists从grand\u parents中选择1,其中grand\u parents.id=parents.grand\u parents\u id'

如果中间有一个联接表,比如grand_parent_parents表,则会略有不同


Child.joins:parent.where'not exists从grand\u parent\u parents中选择1,grand\u parent\u parents.parent\u id=parent.id'

什么意思,祖父母等于TRUE?“祖父母”是一个模型类,不是布尔类。希望能为清晰起见进行编辑。啊,好的。那么grand_parents表有一个布尔值列?是的,该值是grand_parents表上的一个实际列。我得到一个错误:ActiveRecord::ConfigurationError:在子表上找不到名为“grand_parent”的关联;也许你拼错了?哦,对不起。joinsparent:[:grand_parent]@bf34谢谢-如果你想找到没有相关祖父母的孩子,例如祖父母为零的孩子,你可以使用类似。。。。Child.joins:parent.where'not exists从grand_parents中选择1,其中grand_parents.id=parents.grand_parents_id'如果中间有一个连接表,比如grand_parents\u parents表Child.joins:parent.where'not exists从grand_parents中选择1,其中grand_parents\u parents.id=parents.id
Child.where(grand_parent.value: TRUE)