如何在Rails(活动记录)中定义多对多关联和相关属性?

时间:2013-11-26 15:21:21

标签: ruby-on-rails activerecord many-to-many model-associations

我想知道如何在多对多关系中添加其他属性。 我有两种模式,分享多对多的关系,公司和职业。

许多专业人士可能属于公司

所以我的公司模型如下所示

class Company < ActiveRecord::Base
  has_and_belongs_to_many :professions
end

同一职业的同一人也可以属于多家公司 所以

class Profession < ActiveRecord::Base
  has_and_belongs_to_many :companies
end

现在我需要将每小时的费率与同一职业的每家公司联系起来。我不太确定在哪里介绍小时房价?即使我要将其添加到连接表中,如何使用活动记录访问该速率?

1 个答案:

答案 0 :(得分:1)

这是通过over habtm选择has_many的典型场景。通常,如果您只需要关联两个模型,则不需要在关联中存储其他信息,请使用habtm。在大多数情况下,您必须使用has_many。你的情况属于这种情况。

您希望在与ProfessionCompany相关联的表格中保存每小时费率。如果您有要迁移的现有数据,则可能需要查看此帖子How to migrate has_and_belongs_to_many to has_many through?。如果你可以删除用于habtm关联的连接表,只需删除它并创建一个新表。