在没有计数器缓存的一对多关系中,我怎样才能找到没有孩子的父母?
user.rb
has_many :pages
page.rb
belongs_to :user
我试过
User.includes(:pages).where("pages.user_id is NULL")
这在MySQL中遇到了麻烦。
答案 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")
也可能有用......