簡體   English   中英

具有Devise&Pundit的Rails 4-@user或@current_user

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM