У меня есть модель пользователя, которая has_many: posts. Если бы я хотел сделать named_scope для поиска пользователей с хотя бы одним сообщением, это было бы правильно?Named_scope хотя бы один в has_many ассоциации
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"
вы должны оставить в: группе, в противном случае, что происходит, когда есть больше чем один пост для пользователя? В вашем результирующем наборе вы получите много дубликатов записей пользователей из-за INNER JOIN. (если рельсы автоматически не отфильтровывают это для вас, я забыл - даже так, зачем возвращать необдуманные строки из db?) – dalyons
ORM заботится о группировке даже на 'LEFT JOIN'. Если вы начнете группировать оператор 'GROUP BY', вам понадобится группировать или агрегировать каждый столбец в инструкции' SELECT'. –
Есть ли простой способ найти пользователей с нулевыми сообщениями? – Chap