查询父项是否具有特定属性的子项?

时间:2011-09-07 11:40:41

标签: ruby-on-rails ruby-on-rails-3

假设我有一个家伙,有很多孩子

我想把所有没有孩子的父母拉出来,并将其设置为真。

3 个答案:

答案 0 :(得分:2)

没有终端,但你可以尝试一下吗?:

class Parent < ActiveRecord::Base
  has_many :children

  scope :evil, select("parents.*, SUM(children.favourite) as fav_count").joins("LEFT JOIN children ON (children.parent_id = parents.id AND children.favourite = 1)").group("parents.id").having("fav_count = 0")
end

我喜欢更清晰的语法,但我不确定更好的方法(任何人)?如果有任何SQL错误,请告诉我,但我认为会为您提供所需的内容。

注意:要使用此功能,您只需转到Parent.evil,或者将其链接到关联foo.parents.evil

答案 1 :(得分:0)

您应该可以使用ActiveRecord进行简单的连接来完成此任务:

Parent.where(:children => {:favourite => true}).joins(:children)

答案 2 :(得分:0)

Parent.joins(:children).where(children:{favorite:true})

注意我使用的是1.9哈希语法,我觉得它看起来更清晰。