Столкнулся с проблемой, не могу понять, как сделать изменение ролей для пользователей. Нужно чтобы можно было в любой момент поменять роль у юзеров:
Итак, cancan, devise, rails 4 ruby 2.0.
models/user.rb
has_many :users_roles, dependent: :destroy
has_many :roles, through: :users_roles
models/users_role.rb
belongs_to :user
belongs_to :role
models/role.rb
has_many :users_roles
has_many :users, through: :users_roles
В контроллере указываю:
controllers/users_controller.rb
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to @user
end
end
private
def user_params
params.require(:user).permit(:name, roles_attributes: [ :user_id, :role_id])
end
И во вьюхе делаю следующую форму:
views/users/edit.html.erb
<%= form_for (@user) do |f| %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= hidden_field_tag "user[role_ids][]", nil %>
<% Role.all.each do |role| %>
<%= check_box_tag "user[role_ids][]", role.id, @user.role_ids.include?(role.id), id: dom_id(role) %>
<%= label_tag dom_id(role), role.name %><br>
<% end %>
<%= f.submit %>
<% end %>
Но не работает, не могу понять как передать атрибуты для создания в базе users_role нужный полей.