Нужна ли мне таблица соединений для ассоциации has_many: through? - PullRequest
4 голосов
/ 14 октября 2011

Ранее я только создал ассоциацию has_and_belongs_to_many, и она отличается от has_many: through.Для has_many: через ассоциацию мне нужна таблица соединений?Как работает фактическая ассоциация?Нужен ли мне индекс?Я не могу найти хороший учебник по этому вопросу, какие-либо предложения?

Ответы [ 2 ]

7 голосов
/ 14 октября 2011

Да, вам нужен объединительный стол.Это показывает, как: http://railscasts.com/episodes/47-two-many-to-many

Это также может быть полезно; has_many: сквозные вопросы

Кстати, если вам нужно выполнить поиск с условием, это поможет: Имеет много сквозных ассоциаций с условиями

Такжеотличный пример с кодом редактирования вложенных атрибутов таблицы соединения в вложенная форма Rails с помощью has_many: через, как редактировать атрибуты модели соединения? .

Все эти виды вещей выможет оказаться, что вы хотите сделать:)

Индекс не являются обязательными и также варьируются в зависимости от дБ.mySQL раньше поддерживал только 1 одновременно.Не уверен, что это изменилось.

1 голос
/ 14 октября 2011

Это зависит от того, как вы хотите использовать отношение has_many :through.Есть два разных случая (названных в руководстве по отношениям

  1. для отношения n: m: пример в руководстве - врачи назначают встречи с пациентами.
  2. для 1: n и дополнительного отношения 1: n: пример в руководстве: 1 документ имеет много разделов, а 1 раздел имеет много параграфов.

Для первого вам понадобитсяприсоединиться к таблице, вам не нужен индекс. Для второго вам не нужен ни один из них.

...