使用迁移或模型创建连接表?

Eri*_*ric 3 ruby ruby-on-rails jointable

作为Ruby on Rails的新手,我正在阅读Rails指南,今晚是Active Record Migrations.

在完成关于连接表的部分(http://guides.rubyonrails.org/active_record_migrations.html#creating-a-join-table)之后,我留下的印象是使用create_join_table比创建更好(并且更简单)通过rails生成模型连接表.

这是正确的假设吗?我应该注意细微差别吗?

Jul*_*tto 6

使用类别和产品指南中的示例:

连接表透明地工作.您只能使用两个现有模型(CategoryProduct),并且连接表仅用于启用它们之间的HABTM关系,因此您可以调用category.products,或者product.categories只是工作.

另一方面,只有在需要将该关联作为应用程序中的独特事物(例如,如果您需要Categorization直接执行操作)时,才需要生成模型.

对比Rails指南has_and_belongs_to_many关联的描述(阅读更多):

has_and_belongs_to_many关联创建与另一个模型的直接多对多连接,没有中间模型.例如,如果您的应用程序包含装配体和零件,每个装配体都有许多零件,并且每个零件都出现在许多装配体中,您可以这样声明模型: 在此输入图像描述

has_many :through协会(阅读更多):

has_many:through关联通常用于与另一个模型建立多对多连接.该关联表明通过继续第三模型,声明模型可以与另一模型的零个或多个实例匹配.例如,考虑一种患者预约看医生的医疗实践.相关的协会声明可能如下所示: 在此输入图像描述

所以,是的,你是正确的,create_join_table这比为关联创建模型更简单.您还可以看到这个答案,以获得对这些方法之间差异的另一种解释.