拋出一個沒有方法的錯誤,我的用戶模型做了一個主持人的方法,多數民衆贊成定義上CURRENT_USER的方法沒有它在非登錄用戶
def mod_of_game?(guide_id)
game_mods_relationships.exists?(game_category_id: guide_id)
end
問題是,只要用戶沒有登錄它只是在頁面上拋出無方法錯誤。
我會在將來製作更多的用戶方法,我只能假設我每次都會遇到這個問題。
我還沒有嘗試過,但我想我可以把一個if else語句的方法
def mod_of_game?(guide_id)
if current_user.nil?
#empty method
else
game_mods_relationships.exists?(game_category_id: guide_id)
end
但我覺得還有的是我不知道的更有效的方式。我正在構建一個應用程序來更好地學習rails,所以我猜這是我不知道的事情之一。
在這種情況下,我不能在過濾器之前使用。如果current_user是一個mod,則在控制器方法內部的if語句中調用該方法以向db表中添加額外信息。 – Rob
然後我提出的另一個建議('current_user.mod_of_game?(@ guide),除非current_user.nil?')應該可以工作。 – taglia
所以基本上這個調用變成了'nil.mod_of_game?當用戶沒有登錄時,@ guide'?並且該方法不在nil中,所以不管用戶模型中的方法對於未登錄的用戶都無效。 – Rob