0

我正在从头开始构建用户授权,并且一直在处理用户角色。我被困在权限部分,因为我不确定如何定义它。当我将“before_filter :authorize”添加到控制器时,它会在所有页面上显示“未初始化常量 ApplicationController::Permission”错误。

我知道错误来自我的 application_controller.rb 文件:

  def current_permission
    @current_permission || Permission.new(current_user)
  end

  def authorize
    if !current_permission.allow?(params[:controller], params[:action])
      redirect_to root_url, alert: "Not authorized."
    end

权限.rb:

Class Permission < Struct.new(:user)
  def allow?(controller, action)
    if user.nil?
    controller == "galleries" && action.in?(%w[index show])
  elsif user.admin?
    true
  else
    controller == "galleries" && action != "destroy"
  end
  end

我不知道如何在我的应用程序中正确定义权限,以便我不会收到该错误。有没有人有任何想法?

4

1 回答 1

1

您的Permission班级有两个问题:

  1. Class应该是class小写的c
  2. 你错过了end关闭课程。

我还必须指出,真的没有理由重新发明轮子。许多人选择使用cancandeclarative_authorization来完成您想要完成的任务。

就个人而言,我喜欢更轻量级的Pundit gem,它似乎非常适合您想要完成的工作。

于 2013-03-14T14:51:29.083 回答