Rails查询所有关联记录在某些特定字段中具有nil或某些特定值的记录

时间:2017-11-16 10:09:48

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

我有两个模型,has_manybelongs_to关系:

class Parent < ActiveRecord::Base
  has_many :children
end

class Child < ActiveRecord::Base
  belongs_to :parent
end

如何找到所有孩子在某些特定领域都没有价值的父母。

2 个答案:

答案 0 :(得分:0)

您可以加入子表,然后检查attribute_to_test是否为nil?

@nillish_parents = Parent.joins(:children).where("child.attribute_to_test IS ?", nil)

@nillish_parents.each do |p|
    p.name
end

答案 1 :(得分:-1)

&#39;所有孩子都有病情。通常要难得多!我确定有一些方法可以通过复杂的连接来实现,但更简单的ruby方式是执行以下操作:

parents = []
Parent.includes(:children).find_each do |parent|
  parents.push(parent) if parent.children.collect{|child| child.field.nil?}.reduce(:&)
end