当角色在Rails中枚举时,用于更改用户角色的表单和控制器操作

时间:2016-09-30 08:51:31

标签: ruby-on-rails forms controller

假设我们有User ActiveRecord模型。

class User < ActiveRecord::Base
  has_many :users_roles, dependent: :destroy
end

用户角色ActiveRecord模型。

class UsersRole < ActiveRecord::Base
  enum role: { guest: 0,
               os_employee: 1,
               os_contractor: 2,
               os_moderator: 3,
               os_administrator: 4,
               learner: 5,
               learner_representative: 6,
               teacher: 7,
               head_teacher: 8,
               system_administrator: 9,
               observer: 10  }
end

如何创建一个允许我们更改用户角色的表单和相应的控制器操作?表单可以是具有嵌套角色属性的用户表单,也可以是用户角色列表的独立表单。

2 个答案:

答案 0 :(得分:1)

您可以使用构建来使用嵌套属性 @ user.roles.build

= f.fields_for :roles do |r|

   = r.select(:role, options_for_select(Role.pluck(:role)))

答案 1 :(得分:0)

不清楚为什么需要特定的控制器操作。

您可以直接在视图中添加,作为表单的一个字段:

f.select :role, UsersRole.roles.keys.map { |r| [r.humanize, r] }

(检查Saving enum from select in Rails 4.1