如何创建validates_inclusion_of设置的有效值的下拉列表?

Max*_*tor 5 forms validation ruby-on-rails dry

我有一个User它的模型对象permission的属性被限制validates_inclusion_of['user','org_admin','site_admin'].在为此对象设计创建/编辑表单时,我不想复制此列表,以防以后更改.是否有"Rails方式"来执行此操作,或者我应该只将有效值列表提取到可从实例外部访问的属性中?

Mar*_*ran 4

如果我真的想使用字符串,我可能会定义一个包含上述权限的 User::PERMISSIONS 常量。

class User < ActiveRecord::Base
  PERMISSIONS = ['user','org_admin','site_admin']
  validates_inclusion_of :permission, :in => PERMISSIONS
end
Run Code Online (Sandbox Code Playgroud)

简化形式(示例中使用simple_form )

simple_form_for(@user) do |f|
  f.input :permission, :as => :select, :collection => User::PERMISSIONS
end
Run Code Online (Sandbox Code Playgroud)

如果创建一个权限模型并在创建新用户时只保存permission_id,那就更简洁了。

可能有更好的方法来做到这一点,所以我期待其他答案。