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

我在 UserTeam 中包含了这个问题。 每次创建 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

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