将管理员角色添加到设计用户模型中

时间:2015-02-21 17:10:17

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我认为我的问题很简单,我一步一步地按照此页How To: Add an Admin Role上显示的第二个选项进行操作。现在我想使用current_user.admin?使用before_action方法(因此before_action :current_user.admin?),但我看到了这个错误。

**undefined method `admin?' for :current_user:Symbol**

我甚至无法使用admin方法和before_action方法,如果你想知道,是的,我已经登录了。

现在,我能做的是在控制器中定义一个新方法,例如admin_only。

  def admin_only
    if !current_user.admin then
      redirect_to :back, :alert => "Access denied."
    end
  end

然后使用before_action :admin_only并且它运行良好,但我认为它突破了控制器的逻辑以定义诸如admin_only之类的方法。那么......有没有办法过滤管理员而不必在控制器中定义新方法?。

1 个答案:

答案 0 :(得分:0)

您应该定义一种方法来执行此操作。因为before_action需要你有一个已定义的动作,并告诉rails通过将其名称作为符号来调用它。

这就是为什么你得到一个未定义的方法错误,原因:current_user只是一个符号,而不是你期望的用户对象。