0

Dans un souci que j'exécuter ce code:Rails: Vérifiez si l'association existe sur le modèle

self.user&.favorite(self, scope: [:watching]) if self.respond_to? user 
self.team&.user.favorite(self, scope: [:watching]) if self.respond_to? team 

J'inclus cette préoccupation dans User & Team. Chaque fois que je crée un User, je reçois l'erreur suivante:

NameError: undefined local variable or method `user' for #<User:0xb0e9020>

En va de même pour la création d'un Team.

Pourquoi cela se produit-il? Évidemment, User n'a pas de méthode (ou équivalent) qui répond à l'utilisateur sur une instance. Mais c'est pourquoi j'ai ajouté if self.respond_to? user à l'instruction.

Répondre

1

Votre problème est que respond_to? reçoit le symbole comme un argument

self.user&.favorite(self, scope: [:watching]) if self.respond_to? :user 
self.team&.user.favorite(self, scope: [:watching]) if self.respond_to? :team 

Voilà pourquoi si une méthode user ou team n'est pas définie, vous recevez l'erreur.