Подход 1 - Добавить новую ассоциацию
Добавьте has_one
связь с where
лямбда-выражением. Это позволяет вам работать в рамках вашей текущей схемы.
class Account
has_many :users
has_one :primary_user, -> { where(is_primary: true) }, :class_name=> "User"
end
Сейчас:
account.users #returns all users associated with the account
account.primary_user #returns the primary user associated with the account
# creates a user with is_primary set to true
account.build_primary_user(name: 'foo bar', email: 'bar@foo.com')
Подход 2 - Добавить метод ассоциации
class Account
has_many :users do
def primary
where(:is_primary => true).first
end
end
end
Сейчас:
account.users.primary # returns the primary account