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。因此,按照惯例将其保留为用户
我正在尝试使用 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。因此,按照惯例将其保留为用户