#ruby-on-rails #ruby #ruby-on-rails-3 #many-to-many
#ruby-on-rails #ruby #ruby-on-rails-3 #многие ко многим
Вопрос:
Простите меня, если это глупый вопрос, потому что я все еще довольно новичок в rails,
Каков стандартный способ управления отношениями «многие ко многим» с помощью флажков в rails в наши дни?
Все, что я видел, требует либо исправления с помощью method_missing, либо использования обратного вызова after_save..
Есть ли автоматический способ сделать это в rails 3?
(С использованием модели отношений, а не HABTM)
Спасибо
Дэниел
Комментарии:
1. кто (или что) такой Коренастый бекон?
Ответ №1:
Я полагаю, что has_many through — это то, что вам нужно, поскольку HABTM, насколько я понимаю, устарел.
Например, я внедрил Devise в свой проект с пользователями, и у пользователей может быть много ролей, у ролей много пользователей. Существует таблица под названием «назначения» (со столбцами user_id и role_id), которая связывает таблицы пользователей и ролей.
Итак, мои модели выглядят примерно так…
user.rb
has_many :assignments, :dependent => :destroy
has_many :roles, :through => :assignments
assignment.rb
belongs_to :user
belongs_to :role
role.rb
has_many :assignments
has_many :users, :through => :assignments
Тогда, на мой взгляд, _form.html.erb для пользователей, у меня есть
<% for role in Role.find(:all) %>
<%= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role), :multiple => true, :include_blank => TRUE %>
<%= role.name %>
<% end %>
Итак, когда пользователь сохраняется с соответствующими флажками, отношения обрабатываются. В любом случае, я не помню номер эпизода, но есть Railscast, из которого, я полагаю, я получил это.
Комментарии:
1. Вау.. Это так просто? Дух! Проверю это позже и предоставлю вам реквизиты: D