Динамическое добавление ролей через форму USING Rolify вместе с Devise и Cancan

Я только следовал учебнику " 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 %>

Столбец Роли подключается к таблице ролей (Rolify Roles)

Вот моя роль.рб

Роль класса

has_and_belongs_to_many: пользователи,:join_table =>:users_roles

own_to: resource,: polymorphic => true

User.rb

класс User

own_to:account,:inverse_of =>: пользователи

проверяет: account,:sence => true

rolify

attr_accessible: role_ids

# Включить модули разработки по умолчанию. Доступны также: #: подтверждаемый,: блокируемый,: проверяемый и: универсальный

devise:database_authenticatable,:registerable,:recoverable,: вспоминаемый,: trackable,: validatable

# Настройка доступных (или защищенных) атрибутов для вашей модели

attr_accessible: электронная почта,: пароль,: подтверждение пароля,: Remember_me,: role_ids

# attr_accessible: title,: body

has_many: auditinits

конец

Любая помощь ценится!

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]
Другие вопросы по тегам