Rails:检查Model上是否存在关联

时间:2017-08-24 16:33:58

标签: ruby-on-rails ruby model associations activesupport-concern

关注我运行此代码:

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

1 个答案:

答案 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

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