2011-07-03 82 views
7

在沒有櫃檯緩存的一對多關係中,我怎麼能找到沒有孩子的父母?Rails 3找到沒有孩子的父母

user.rb

has_many :pages 

page.rb

belongs_to :user 

我已經試過

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

這是在MySQL製造麻煩。

回答

14

嘗試

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

感謝它幫了我很多。 – rubyrubyruby

+0

+1因爲Arel很漂亮 – jaydel

+0

謝謝,它也幫了我很多! – sidney

0

一種方法是

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

但我不知道如何(在)有效,這將是。

+2

count(*)不是我個人想要運行的東西,如果它是一個常見的查詢。 –

0

我相信像

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

也可能工作...