Rails: 检查模型上是否存在关联
Rails: Check if association exists on Model
关注我运行这段代码:
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: undefined local variable or method `user' for #<User:0xb0e9020>
同样适用于创建 Team
。
为什么会这样?显然 User
没有响应实例上用户的方法(或等效方法)。但这就是我在声明中添加 if self.respond_to? user
的原因。
你的问题是 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
方法,您将收到错误。
关注我运行这段代码:
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: undefined local variable or method `user' for #<User:0xb0e9020>
同样适用于创建 Team
。
为什么会这样?显然 User
没有响应实例上用户的方法(或等效方法)。但这就是我在声明中添加 if self.respond_to? user
的原因。
你的问题是 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
方法,您将收到错误。