通过Form使用Rolify以及Devise和Cancan动态添加角色

时间:2014-04-14 08:53:23

标签: ruby ruby-on-rails-3 devise cancan rolify

我只是按照教程https://github.com/EppO/rolify/wiki/Tutorial进行了非常好的工作。但我的问题不能通过表单添加角色而不使用Rails控制台。

<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 %>

“角色”列连接到角色表(“滚动角色”)

这是我的角色.rb

class Role&lt;的ActiveRecord ::基

has_and_belongs_to_many:users,:join_table =&gt; :users_roles

belongs_to:resource,:polymorphic =&gt;真

User.rb

class User&lt;的ActiveRecord ::基

belongs_to:account,:inverse_of =&gt; :用户

验证:account,:presence =&gt;真

rolify

attr_accessible:role_ids

#包括默认设计模块。其他可用的是:   #:确认,:可锁定,:超时和:omniauthable

设计:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable

#为您的模型设置可访问(或受保护)属性

attr_accessible:email,:password,:password_confirmation,:remember_me,:role_ids

#attr_accessible:title,:body

has_many:auditinits

任何帮助都很感激!!

1 个答案:

答案 0 :(得分:1)

用户表单中,选择下拉选择角色,

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

用户控制器中的创建操作修改为

@user = User.new(user_params)

@user.add_role params[:user][:role]