Named_scope хотя бы один в ассоциации has_many - PullRequest
3 голосов
/ 30 июня 2010

У меня есть пользовательская модель 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 Ответ

4 голосов
/ 30 июня 2010

На самом деле я не думаю, что необходимо группировать или добавлять условие. Поскольку вы используете :joins, это будет INNER JOIN и, следовательно, будет тянуть только пользователей с сообщениями. Если вы собираетесь сделать: include, это будет LEFT JOIN, и вам нужно будет добавить предложение HAVING.

Так что все, что вам нужно, это

named_scope :at_least_one_post, :joins => :posts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...