Adding Role dynamically through Form USing Rolify

2019-08-15 05:04发布

I just followed the tutorial "https://github.com/EppO/rolify/wiki/Tutorial" its very nice and working fine. But my question can't we add Role through form with out using Rails console.

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

The Role column connect to roles table (Rolify Roles)

Here is my role.rb

class Role < ActiveRecord::Base

has_and_belongs_to_many :users, :join_table => :users_roles

belongs_to :resource, :polymorphic => true

User.rb

class User < ActiveRecord::Base

belongs_to :account, :inverse_of => :users

validates :account, :presence => true

rolify

attr_accessible :role_ids

# 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_ids

# attr_accessible :title, :body

has_many :auditinits

end

Any help is appreciate!!

1条回答
祖国的老花朵
2楼-- · 2019-08-15 05:31

In User Form, make a Drop down select for the roles as,

<%= user_form.select :role,options_from_collection_for_select(Role.all,"name","name) %>

Modify Create action in Users Controller as

@user = User.new(user_params)

@user.add_role params[:user][:role]
查看更多
登录 后发表回答