假设我有一个家伙,有很多孩子
我想把所有没有孩子的父母拉出来,并将其设置为真。
答案 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哈希语法,我觉得它看起来更清晰。