カウンタキャッシュを持たない1対多の関係で、どのように子供がいない親を見つけることができますか?Rails 3子なしの親を見つける
user.rb
has_many :pages
page.rb
belongs_to :user
私は、これは、MySQLでトラブルを作っている
User.includes(:pages).where("pages.user_id is NULL")
を試してみました。
カウンタキャッシュを持たない1対多の関係で、どのように子供がいない親を見つけることができますか?Rails 3子なしの親を見つける
user.rb
has_many :pages
page.rb
belongs_to :user
私は、これは、MySQLでトラブルを作っている
User.includes(:pages).where("pages.user_id is NULL")
を試してみました。
は
User.joins("left join pages on pages.user_id = users.id").where("pages.user_id is null")
一つの方法は、
User.where("(SELECT COUNT(*) FROM pages WHERE pages.user_id = users.id) = 0")
だろう試してみてくださいしかし、私は効率的(に)されることかどうかはわかりません。
カウント(*)は、一般的なクエリであれば個人的に実行したいものではありません。 –
私は
User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")
のようなものは、それは私をたくさん助けたも...
おかげでうまくいくかもしれないと考えています。 – rubyrubyruby
+1はArelが美しいので、 – jaydel
ありがとう、それは私にも多くの助けになりました! – sidney