Mutiple对象在一个动作中使用Pundit授权



在下面的代码中,我希望授权团队和用户。

  1. 通过授权团队,我想确保Current_user是团队的管理员
  2. 第二个授权是确保被删除的用户不是团队的管理员(用户)。

我假设您对Rails Gem Pundit有基本知识。是否有更好的方法可以改进此代码?

def remove_user team = Team.find(params[:id]) user = User.find(params[:user_id]) authorize team authorize user .... end

在策略类中,您编写了添加方法以实现逻辑

eg:

class PostPolicy
  -------
    other methods and declaration
  -------
  def initialize(current_user, user)
    @current_user = current_user
    @user = user
  end
  def remove_user?
    @current_user.admin? and @current_user != @user
  end
end

最新更新