Ответ 1
Вам необходимо присоединиться к таблице учетных записей и объединить соответствующие области учетных записей:
User.joins(:account).merge(Account.where(:active => true))
Предположим, что у меня есть модель учетной записи, в которой есть пользователи__пользователя. У учетных записей есть булевский "активный" столбец. Как я могу получить всех пользователей, принадлежащих к "активным" учетным записям?
@users_of_active_accounts = User.?
Спасибо!
Вам необходимо присоединиться к таблице учетных записей и объединить соответствующие области учетных записей:
User.joins(:account).merge(Account.where(:active => true))
Попробуйте следующее:
User.joins(:account).where(:accounts => { :active => true })
Используйте предложение where в ассоциации модели учетных записей:
class Account < ActiveRecord::Base
has_many :users, -> {where(active: true)}
Другие запросы будут работать, но если вы всегда заботитесь только о активных пользователях, фильтрация на уровне ассоциации будет правильно инкапсулировать фильтр и сохранить ваши головные боли в будущем.
Update:
Вы также можете указать 2 отношения в одной таблице:
class Account < ActiveRecord::Base
has_many :users
has_many :active_users, -> {where(active: true)}, :class_name => 'User'
Второе обновление:
После повторного чтения вопроса я теперь вижу, что мой ответ не ответил на вопрос. Вот мой ответ на вопрос:
User.where(account: Account.where(active: true))