允许用户通过设计和rolify从注册表单中选择角色

时间:2014-11-11 22:35:51

标签: ruby-on-rails devise rolify

我想允许用户从新用户表单的复选框中选择他们的角色。

以下是我的相关文件。

模型:

## models\user.rb
class User < ActiveRecord::Base
   rolify
    devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
end

## models\role.rb
class Role < ActiveRecord::Base
   has_and_belongs_to_many :users, :join_table => :users_roles
   belongs_to :resource, :polymorphic => true
   scopify
end

控制器:

##controllers\users\registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
   # before_filter :configure_sign_up_params, only: [:create]
   # before_filter :configure_account_update_params, only: [:update]

   # GET /resource/sign_up
   def new
      super
   end

   ...
end

查看:

<div class="field">
  <%= f.label :roles %>
  <div class="controls">
    <% Role.all.each do |role| %>
        <%= check_box_tag "users_roles[role_ids][]", role.id, @user.role_ids.include?(role.id) %>
        <%= role.name %><br />
    <% end %>
  </div>
</div>

我可以使用

从控制台添加角色
 user.add_role? :admin 

它工作正常。 role_ids列位于名为user_roles的表中。如何从新用户表单写入此表?

0 个答案:

没有答案