Rails 3找到没有孩子的父母

时间:2011-07-03 22:17:29

标签: ruby-on-rails

在没有计数器缓存的一对多关系中,我怎样才能找到没有孩子的父母?

user.rb

has_many :pages

page.rb

belongs_to :user

我试过

User.includes(:pages).where("pages.user_id is NULL")

这在MySQL中遇到了麻烦。

3 个答案:

答案 0 :(得分:15)

尝试

User.joins("left join pages on pages.user_id = users.id").where("pages.user_id is null")

答案 1 :(得分:0)

一种方法是

User.where("(SELECT COUNT(*) FROM pages WHERE pages.user_id = users.id) = 0")

但我不确定那将是多么有效。

答案 2 :(得分:0)

我相信

之类的东西
 User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")

也可能有用......