У меня есть модель User, и у пользователя может быть много ролей.
В форме пользователя я назначаю роли пользователю, выполняя это:
<p><% for role in Role.all %>
<%= check_box_tag "user[roles_ids][]", role.id, @user.roles.include?(role) %>
<%= role.name %>
<% end %>
</p>
, а затем в контроллере у меня есть следующее, чтобы убедиться, что он очищен, когда у пользователя нет выбранных ролей:
params[:user][:role_ids] ||= []
Это все прекрасно работает, однако я хочу иметь оператор if в контроллере, чтобы очищать role_ids
только при возврате таких значений, причина в том, что для некоторых пользователей флажки добавления ролей не отображаются, поэтому они не разрешается устанавливать роли, однако, когда они вносят изменения в другие атрибуты, он очищает все предыдущие ассоциации с любыми ролями, которые присутствовали до обновления.
Как я могу обойти это?
Спасибо