【发布时间】:2019-06-21 19:22:12
【问题描述】:
我定义了一个用户模型,其中有一个经典角色
class User
enum role:[:user, :poweruser, :admin, :superadmin]
我现在使用 RailsAdmin 来管理 rails_admin.rb 文件中的用户字段。 一开始我是这样直接管理角色属性的:
edit do
field :email do
required true
end
field :password
field :password_confirmation
field :role
...
一切都很好。显示当前值(此处为 poweruser),我从 RailsAdmin 自动获得一个组合,其中列出了 4 个值。完美!
现在,我想动态管理角色列表:我需要限制有关当前登录用户的角色列表。 因此,我像这样使用 RailsAdmin 的 :enum 功能:
field :role, :enum do
required true
enum do
if bindings[:view]._current_user.superadmin?
{user:0, poweruser:1,admin:2,superadmin:3}
elsif bindings[:view]._current_user.admin?
{user:0, poweruser:1,admin:2}
else
{user:0}
end
end
end
这行得通,根据当前登录的用户角色正确限制了列表。
但是,我希望角色的初始值应该设置正确,这个值根本不显示:而不是初始值poweruser,'Search' 字(Chercher 在法语中)被显示。 我该如何解决这个问题?
感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails enums devise roles rails-admin