【问题标题】:Rails 4 with Devise & Pundit - @user or @current_userRails 4 与 Devise & Pundit - @user 或 @current_user
【发布时间】:2015-12-19 02:31:31
【问题描述】:

我正在尝试使用 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 而不是 user?例如:

class ApplicationPolicy
      attr_reader :current_user, :record

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

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

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

【问题讨论】:

    标签: ruby-on-rails devise pundit


    【解决方案1】:

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

    当您调用诸如 authorize @object 之类的东西时,Pundit 将从您的控制器发送 current_user。

    在您的班级中,您只需使用 current_user 而不是 user 来执行您的逻辑。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      相关资源
      最近更新 更多