Named_scope在has_many关联中至少有一个

时间:2010-06-30 04:24:39

标签: ruby-on-rails ruby

我有一个用户模型has_many:posts。如果我想创建一个named_scope来查找至少有一个帖子的用户,那么这是正确的吗?

   named_scope :at_least_one_post, :joins => :posts, :group => "users.id"

或者我应该更进一步做

   named_scope :at_least_one_post, :joins => :posts, :group => "users.id", :having => "COUNT(posts.id) > 0"

1 个答案:

答案 0 :(得分:4)

实际上我认为没有必要分组或添加条件。由于您使用的是:joins,因此会执行INNER JOIN,因此只会为用户提供帖子。如果您要执行:include,那将LEFT JOIN,您需要添加HAVING子句。

所以你需要的只是

named_scope :at_least_one_post, :joins => :posts