Используйте условие where в ассоциации модели Account:
class Account < ActiveRecord::Base
has_many :users, -> {where(active: true)}
Другие запросы будут работать, но если вы всегда заботитесь только об активных пользователях, фильтрация на уровне ассоциации будет правильно инкапсулировать фильтр и сохранитьу вас головные боли в будущем.
Обновление:
Вы также можете указать 2 отношения в одной таблице:
class Account < ActiveRecord::Base
has_many :users
has_many :active_users, -> {where(active: true)}, :class_name => 'User'
2-е обновление:
После повторного чтения вопроса,Теперь я вижу, что мой ответ не ответил на вопрос.Вот мой ответ на вопрос:
User.where(account: Account.where(active: true))
3-е обновление: вот пример модели пользователя, имеющей атрибут active_users
class User < ActiveRecord::Base
belongs_to :account
def self.active
where(account: Account.where(active: true))
end
end
Делая это таким образом, вы можете поместить его в линию с другимизапросы пользователей:
User.active.where(created_at: (1.week.ago..0.day.ago)).count