[英]Rails 4 with Devise & Pundit - @user or @current_user
我正在嘗試使用Rails 4制作一個應用程序並進行設計和審查(以角色扮演角色)
在里面:
class ApplicationPolicy
attr_reader :user, :record
def initialize(user, record)
@user = user
@record = record
end
根據這段Go Rails視頻: https : //gorails.com/episodes/authorization-with-pundit?autoplay=1
應用程序策略中的attr_reader部分涵蓋了所有其他策略-因此您無需在每個策略中都重復。
但是,當前的問題是我使用devise,是否應該將應用程序策略更改為使用current_user而不是user? 例如:
class ApplicationPolicy
attr_reader :current_user, :record
def initialize(current_user, record)
@current_user = current_user
@record = record
end
我發現的所有示例都沒有這種方式,但是我不明白為什么不這樣做。
我希望在開始為每個策略編寫規則之前先弄清楚我是否正確。 我制定策略的每個控制器操作是否都需要引用用戶,還是應該將它們全部更改為current_user?
您可以使用任何您想做的授權邏輯。
當您調用諸如authorize @object之類的命令時,Pundit將從您的控制器發送current_user。
在您的類中,您只需要使用current_user而不是user來進行邏輯處理。
您為什么要更改它? 從應用程序的角度來看,您實際上是在授權用戶執行某項操作,而不一定要是current_user。 因此,保持用戶遵循慣例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.