У меня есть две модели Users
и Roles
. Я установил взаимосвязь «многие ко многим» между двумя моделями, и у меня есть объединенная таблица под названием roles_users
.
У меня есть форма на странице со списком ролей, которую пользователь ставит флажок и отправляет на контроллер, который затем обновляет таблицу roles_users
.
На данный момент в моем методе обновления я делаю это, потому что я не уверен в лучшем способе:
role_ids = params[:role_ids]
user.roles.clear
role_ids.each do |role|
user.roles << Role.find(role)
end unless role_ids.nil?
Таким образом, я очищаю все записи, затем зацикливаю, выкинул все идентификаторы ролей, отправленные из формы по почте, я также заметил, что если все флажки отмечены и форма опубликована, то в ней добавляются повторяющиеся записи, может кто-нибудь дать какой-нибудь совет на более эффективный способ сделать это?