In my method I want to check if user has only one shareholder, if it so it should return true
(later on it's used in if
block). Basically it should reflect something like User.find_by(id: user.id).shareholder.count < 1
because it overloads the database with unnecessary queries (I have db with ~30k users).
What I was thinking is to create queries with where
so I have this one:
def one_shareholder?(shareholder)
ShareholdersUser.where(user_id: shareholder.owner_id).
where.not(shareholder_id: shareholder.id).exists?
end
But I don't know how to implement query which will be counting if this user has only one shareholder. Should I use something like find_each
?
Edit:
user has_many :shareholder
shareholder belongs_to :owner
ShareholdersUser belongs_to :user and :shareholder