#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
У меня есть 2 таблицы:
Единицы
Двойки
Оба имеют отношение has_many друг к другу в определении их модели. И третья таблица с именем Ones_Twos, которая содержит ассоциации между обоими.
Правильно ли, что rails автоматически подбирает ассоциации?
Редактировать: или оба поля должны быть has_and_belongs_to_many ?
Ответ №1:
Обе модели должны иметь has_and_belongs_to_many
. Обратите внимание, что по соглашению имя таблицы объединения будет ones_twos
(все в нижнем регистре).
Комментарии:
1. Я согласен с вами, но Rails также отлично работает с
has_many :through
2. Если таблица соединений не содержит никакой другой информации (это не что иное, как таблица соединений), я бы просто использовал
has_and_belongs_to_many
.3. Вы правы, но что, если он захочет добавить дополнительную информацию в таблицу объединения? 🙂
Ответ №2:
Это отношение называется «многие ко многим». И вы хотите установить это отношение через третью таблицу. Вы должны добавить belongs_to :one
belongs_to :two
оператор and в модель Ones_Twos. И это будет работать.
Вот еще немного информации: отношения Rails
Надеюсь, это вам поможет.
Комментарии:
1. Итак, я должен создать модель для таблицы ассоциаций? Я думал, что rails распознает это автоматически?
2. @Hopstream, нет, в этом нет необходимости! Rails распознает это автоматически.