您可能听说过 Pundit。https://github.com/elabs/pundit基本上,它是一个授权宝石。
我想知道的是,它如何访问current_user
其类中的变量?
我不知道怎么做,但是@user
两者user
都等于current_user
class PostPolicy
attr_reader :user, :post
def initialize(user, post)
@user = user
@post = post
end
def update?
user.admin? or not post.published?
end
end
我们在这个类中也有 post 变量。我们可以通过运行来访问它
def publish
@post = Post.find(params[:id])
authorize @post
end
在一个动作中。
要安装 Pundit,您需要将模块包含到应用程序控制器中:
class ApplicationController < ActionController::Base
include Pundit
end
但是,我仍然看不到该类如何“查询” current_user 的控制器以及授权如何将变量(post)提供给该类。请回答这两个问题:)