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

时间:2015-12-19 02:31:32

标签: ruby-on-rails devise pundit

我正在尝试使用Rails 4和设计和专家(使用rolify for roles)制作应用程序

在:

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部分涵盖了所有其他策略 - 因此您无需在每个策略中重复。

但是,我目前的问题是我使用设计,我是否应该更改应用程序策略以使用current_user而不是用户?例如:

class ApplicationPolicy
      attr_reader :current_user, :record

      def initialize(current_user, record)
        @current_user = current_user
        @record = record
      end 

我发现的所有例子都没有这样做,但我不明白为什么不这样做。

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

1 个答案:

答案 0 :(得分:1)

您可以使用您想要执行授权逻辑的任何内容。

当你打电话给@object这样的东西时,Pundit会从你的控制器发送current_user。

在课堂上,你只需要用current_user而不是用户来做你的逻辑。

你为什么要改变它?从您的应用程序的角度来看,您实际上是在授权用户执行某些操作,而不一定是current_user。所以保持用户遵循惯例