В моем методе я хочу проверить, есть ли у пользователя только один акционер, и должен ли он возвращать true
(позже он используется в блоке if
).По сути, он должен отражать что-то вроде User.find_by(id: user.id).shareholder.count < 1
, потому что он перегружает базу данных ненужными запросами (у меня есть база данных с ~ 30k пользователей).
Я думал о том, чтобы создавать запросы с where
, поэтому у меня есть этот:
def one_shareholder?(shareholder)
ShareholdersUser.where(user_id: shareholder.owner_id).
where.not(shareholder_id: shareholder.id).exists?
end
Но я не знаю, как реализовать запрос, который будет учитываться, если у этого пользователя только один акционер.Должен ли я использовать что-то вроде find_each
?
Редактировать:
user has_many :shareholder
shareholder belongs_to :owner
ShareholdersUser belongs_to :user and :shareholder