Rails: Как реализовать именованную область видимости, которая возвращает всех пользователей, написавших хотя бы одно сообщение? - PullRequest
0 голосов
/ 09 августа 2011

Рассмотрим следующие ассоциации:

class User < ActiveRecord::Base
  has_many :messages, :foreign_key => "publisher_id"
  scope :wrote_at_least_one_message, <??>
end

class Message < ActiveRecord::Base
  belongs_to :publisher, :class_name => "User"
end

Как я могу реализовать wrote_at_least_one_message именованную область?

1 Ответ

1 голос
/ 09 августа 2011

Как насчет этого?Внутреннее соединение проверит хотя бы одну запись в таблице сообщений.Отличается избегать дубликатов.

scope :wrote_at_least_one_message, select('DISTINCT users.*').joins(:messages)
...