我有一个用户模型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"
答案 0 :(得分:4)
实际上我认为没有必要分组或添加条件。由于您使用的是:joins
,因此会执行INNER JOIN
,因此只会为用户提供帖子。如果您要执行:include,那将LEFT JOIN
,您需要添加HAVING
子句。
所以你需要的只是
named_scope :at_least_one_post, :joins => :posts