我在rails中有一个包含属性authorization
的用户模型。我想将它设计为一个包含用户授权级别的枚举:
class User < ApplicationRecord
enum authorization: [default: 0, moderator: 1, admin: 2]
# User code
end
之后我在我的应用程序控制器中添加了一些方法,我想用来验证授权状态其他控制器中的用户。
#Application Controller
def moderator_required
return redirect_to root_path if current_user.nil?
redirect_to root_path if !current_user.admin? && !current_user.moderator?
end
def admin_required
return redirect_to root_path if current_user.nil?
redirect_to root_path unless current_user.admin?
end
我在Documentation找到了快捷方式user.admin?
。
即使我得到以下内容尝试使用admin_required方法时出错:
undefined method `admin?' for #<User:0x7091e20>
有没有人知道我在这里缺少什么?
答案 0 :(得分:2)
您正在使用哈希。尝试将枚举声明更改为:
enum authorization: { default: 0, moderator: 1, admin: 2 }
答案 1 :(得分:1)
从零开始并以1递增是默认设置,因此您甚至不需要哈希。这是相同的
enum authorization: [:default, :moderator, :admin]