0

存在協會關注我運行此代碼:的Rails:檢查是否在型號

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的聲明。

回答

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方法,您會收到錯誤。