我认为我的问题很简单,我一步一步地按照此页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之类的方法。那么......有没有办法过滤管理员而不必在控制器中定义新方法?。
答案 0 :(得分:0)
您应该定义一种方法来执行此操作。因为before_action
需要你有一个已定义的动作,并告诉rails通过将其名称作为符号来调用它。
这就是为什么你得到一个未定义的方法错误,原因:current_user
只是一个符号,而不是你期望的用户对象。