关注我运行此代码:
self.user&.favorite(self, scope: [:watching]) if self.respond_to? user
self.team&.user.favorite(self, scope: [:watching]) if self.respond_to? team
我在User
& Team
。
每次我创建User
时,都会收到以下错误:
NameError:未定义的局部变量或方法`user'对于#< User:0xb0e9020>
同样可以创建Team
。
为什么会这样?显然User
没有在实例上响应用户的方法(或等效方法)。但这就是为什么我在语句中添加了if self.respond_to? user
。
答案 0 :(得分:1)
您的问题是respond_to?接收符号作为参数
self.user&.favorite(self, scope: [:watching]) if self.respond_to? :user
self.team&.user.favorite(self, scope: [:watching]) if self.respond_to? :team
这就是为什么如果未定义user
或team
方法,您将收到错误。