[英]Policy error: undefined method id for nil:nilClass
我有一個給我帶來麻煩的政策。 我不斷收到錯誤消息
undefined method `id' for nil:NilClass
適用於以下政策:
def update?
user.present? && current_user.creator?(record, current_user)
end
這是方法user.creator ?:
def creator?(wiki, user)
relationships.find_by(wiki_id: wiki.id, user_id: user.id).creator_created
end
關系是通過Wiki和用戶之間的關系在has_many中的聯接表。 Wiki和User都不為零,Relationships也不應為零。 我剛剛為數據庫添加了種子,以包括每個Wiki的“關系”記錄。 如果沒有用戶,則此策略可以正常工作,它只是拒絕我輸入的內容。 只有當有用戶,換句話說,當我登錄的用戶會出現此錯誤。 所以我只是不知道哪個類讀為nil,哪個id是個問題。
有什么想法嗎?
謝謝!
該策略中可能沒有current_user
,這通常是Devise提供的控制器幫助器方法。
從您發布的內容來看,這就像授權的Pundit。 在權威人士, current_user
是不是當前用戶, user
是因為它使用時穿過當前用戶authorize
方法(我假設你定義user
在策略類作為用戶,如果不是,則使用定義的變量用戶)。 閱讀Pundit文檔以獲取更多信息。
用user
替換current_user
,您不會收到該錯誤。 如果您想對授權做一些特殊的事情,請發表您要做的事情的評論。
我想我在沒有關聯記錄的示例上調用該策略,因此關聯為零。 我已經編輯過我的創作者? 方法:
def collaborator?(wiki, user)
if Relationship.exists?(:wiki_id =>wiki.id, :user_id => user.id)
true
else
false
end
end
這似乎有所幫助。 謝謝您的意見!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.