找到协会中的所有内容

Mat*_*iby 13 ruby-on-rails ruby-on-rails-3

所以我有一个帖子和一个用户.
发布has_many用户,用户发布帖子.
我需要一个查找,找到所有没有任何用户的帖子,如下所示:

Post.first.users
 => [] 
Run Code Online (Sandbox Code Playgroud)

Dyl*_*kow 28

Post.where("id not in (select post_id from users)")
Run Code Online (Sandbox Code Playgroud)


Jos*_*ach 19

今天就学到了这个:

Post.eager_load(:users).merge(User.where(id: nil))
Run Code Online (Sandbox Code Playgroud)

至少可以使用Rails 4+.

更新:

在Rails 5+中,您可以使用left_joins:

Post.left_joins(:users).merge(User.where(id: nil))
Run Code Online (Sandbox Code Playgroud)