J'ai l'application rails qui a une liste d'utilisateurs. J'ai différentes relations entre les utilisateurs, par exemple travaillé avec, ami, préféré. Lors de la liste des utilisateurs, je dois décider si l'utilisateur actuel peut ajouter un utilisateur spécifique à ses amis.Eager charger cette association de rails
-if current_user.can_request_friendship_with(user)
=add_to_friends(user)
-else
=remove_from_friends(user)
-if current_user.can_request_worked_with(user)
=add_to_worked_with(user)
-else
=remove_from_worked_with(user)
Le can_request_friendship_with (utilisateur) ressemble à:
def can_request_friendship_with(user)
!self.eql?(user) && !self.friendships.find_by_friend_id(user)
end
Mon problème est que cela signifie dans mon cas 4 requête par utilisateur. La liste de 10 utilisateurs signifie 40 requêtes. Pourrais-je en quelque sorte impatient de charger ça?
Votre solution n'est pas le meilleur, mais l'idée est bonne. Dans la fonction can_request_friendship_with, nous ne pouvons pas accéder à cette variable d'instance, mais ce n'est pas un problème. – dombesz
Ce n'était pas une solution complète. Ce dont je parlais est d'exclure votre problème du niveau de DB – fl00r