Трюк заключается в том, чтобы помнить, что данные private
относятся к классу, а не к экземпляру класса. Любой метод внутри вашего класса может получить доступ к личным данным любого экземпляра этого класса; не существует способа держать данные конфиденциальными внутри экземпляра, если вы не запрещаете методы, которые явно получают доступ к частным данным из других экземпляров.
Определите их как вспомогательный метод. Но лучший подход - определить их как методы класса в соответствующих классах. А затем позвоните им напрямую.
def user_relation_count(user)
Relation.joins(account: :user).where(users: {id: user.id}).count
end
def user_orders_count(user)
Order.joins(account: :user).where(users: {id: user.id}).count
end