我正在尝试使用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?
答案 0 :(得分:1)
您可以使用您想要执行授权逻辑的任何内容。
当你打电话给@object这样的东西时,Pundit会从你的控制器发送current_user。
在课堂上,你只需要用current_user而不是用户来做你的逻辑。
你为什么要改变它?从您的应用程序的角度来看,您实际上是在授权用户执行某些操作,而不一定是current_user。所以保持用户遵循惯例