Rails 4 与 Devise 和 Pundit - @user 或 @current_user

Rails 4 with Devise & Pundit - @user or @current_user

我正在尝试使用 Rails 4 制作一个应用程序并设计和专家(使用 rolify 角色)

在:

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 而不是用户?例如:

class ApplicationPolicy
      attr_reader :current_user, :record

      def initialize(current_user, record)
        @current_user = current_user
        @record = record
      end 
我找到的

None 个例子都是这样做的,但我不明白为什么不这样做。

我希望在开始为每项政策编写规则之前弄清楚我是否走错了路。我制定策略的每个控制器操作是否需要引用用户,或者我应该将它们全部更改为 current_user?

你可以使用任何你想做的授权逻辑。

当您调用授权@object 之类的内容时,Pundit 将从您的控制器发送 current_user。

在您的 class 中,您只需使用 current_user 而不是用户来执行您的逻辑。

你为什么要改变它?从您的应用程序的角度来看,您实际上是在授权用户做某事,不一定是 current_user。因此,按照惯例将其保留为用户