Динамическое добавление ролей через форму 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]