0

出于担忧,我运行以下代码:

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:0xb0e9020> 的未定义局部变量或方法“用户”

创建一个Team.

为什么会这样?显然User没有在实例上响应用户的方法(或等效方法)。但这就是我添加if self.respond_to? user到声明中的原因。

4

1 回答 1

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

这就是为什么如果未定义useror方法,您将收到错误消息。team

于 2017-08-24T16:52:14.017 回答