使用rails和rails_admin作为下拉字段常量

时间:2013-09-26 16:28:06

标签: ruby-on-rails ruby devise cancan rails-admin

我是ruby和rails的新手,我正在尝试让可用的角色显示在下拉列表中(当我手动创建它时,它曾经工作,但我最近发现了rails_admin),我已经阅读了很多关于它,(我没有角色模型或控制器,因为角色不会改变,一个用户只能有1个角色)。

注意:我也安装了Devise和CanCan宝石。

所以我在我的user.rb模型上有这个常量ROLES,它存储角色,我想在使用rails_admin创建或编辑用户时,角色而不是简单的输入字段,显示下拉列表由名为ROLES的常量填充的列表。

这是我到目前为止所做的:

class User < ActiveRecord::Base
  ROLES = %w(Admininistrator C1 D1 M1 M2).freeze
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable


  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :role

  #Tried this, no luck
 def role_enum
   [['Administrator'],['C1'],['D1'], ['M1'], ['M2']]
 end
 #And this, also no luck
 def ROLES_enum
   [['Administrator'],['C1'],['D1'], ['M1'], ['M2']]
 end
end

还尝试在rails_admin.rb文件

上取消注释
config.model 'User' do
   configure :role, :string 
end

没有运气,就像我说的,我是Ruby和Rails的新手,但我对MVC和PHP的框架Symfony有一些经验,但这对我来说是全新的。我会得到任何帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

def role_enum
  ['Administrator','C1','D1','M1', 'M2']
end