Как бы в этом случае называлась таблица присоединения в Rails 3.1? - PullRequest
4 голосов
/ 28 ноября 2011

У меня есть две таблицы с отношением has_and_belongs_to_many: categories и raw_categories

Должна ли таблица называться categories_raw_categories?

1 Ответ

4 голосов
/ 28 ноября 2011

Да, таблица объединения названа в честь двух таблиц, которые должны быть объединены в алфавитном порядке. Поскольку categories в алфавите выше, чем raw_categories, таблица объединения называется categories_raw_categories. Обратите внимание, что если вы выполняете миграцию, вам нужно создать отдельную миграцию для этой таблицы соединений.

Подробнее об отношениях HABTM и таблицах соединений, необходимых для них, см. Здесь: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many

Также обратите внимание, что вы можете установить произвольное имя для таблицы соединения, если хотите. Пример (если вы хотите вызвать объединительную таблицу category_associations):

# Category model
has_and_belongs_to_many :raw_categories, :join_table => 'category_associations'

# RawCategory model
has_and_belongs_to_many :categories, :join_table => 'category_associations'

Вы также всегда можете явно сделать таблицу соединений первоклассной моделью, используя has_many :though на моделях, подлежащих объединению. Следуя приведенному выше примеру, вы можете сделать CategoryAssociation реальной моделью и присоединить ее к двум другим, например:

# CateogoryAssociation model
belongs_to :category
belongs_to :raw_category

# Category model
has_many :category_associations
has_many :raw_categories, :through => :category_associations

# RawCategory model
has_many :category_associations
has_many :categories, :through => :category_associations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...