У меня есть две модели Users
и Roles
. У меня есть множество отношений между двумя моделями, и у меня есть совместная таблица с именем roles_users
.Ruby on Rails обновление записей в таблице соединений
У меня есть форма на странице со списком ролей, который пользователь проверяет флажок, и он отправляет сообщения в контроллер, который затем обновляет таблицу 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?
Поэтому я клиринговый все записи из затем перекручивания метали все роли идентификаторов, отправленных из форма через почту, я также заметил, что если все флажки отмечены, а в форме, в которой размещена, она добавляет повторяющиеся записи, может ли кто-нибудь дать совет по более эффективному способу сделать это?
Улыбается, что работает отлично, я был интенсивным, используя has_and_belongs для многих, но прочитал о: сквозном подходе и переместил его на это. Еще раз спасибо. – RailsSon
Должен быть user.roles = params [: role_ids] .present? ? Role.find_all_by_id (params [: role_ids]): [] – user938363
Да, вы правы. Под редакцией! – tadman