Каков стандартный способ управления отношениями «многие ко многим» с помощью флажков в rails в наши дни?

#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. кто (или что) такой Коренастый бекон?

2. en.wikipedia.org/wiki/Why ‘s_(острый)_Guide_to_Ruby

Ответ №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