Rails 3: Установить значение '' role_ids '' пустым только при наличии такой области ввода? - PullRequest
0 голосов
/ 02 июня 2011

У меня есть модель 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 только при возврате таких значений, причина в том, что для некоторых пользователей флажки добавления ролей не отображаются, поэтому они не разрешается устанавливать роли, однако, когда они вносят изменения в другие атрибуты, он очищает все предыдущие ассоциации с любыми ролями, которые присутствовали до обновления.

Как я могу обойти это?

Спасибо

1 Ответ

0 голосов
/ 02 июня 2011

Привет, я думаю, если у вас есть пользователи с разными ролями, решение об обновлении идентификаторов или не должно основываться на роли пользователя, а не на данных формы, поэтому вы можете делать что-то вроде

params[ :user ][ :roles_ids ] = current_user.roles_ids unless current_user.has_role? :admin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...