将额外数据添加到连接表 - Rails

时间:2010-02-24 17:01:53

标签: ruby-on-rails

我正在开发一个具有多年模型和课程模型的应用程序。目前有一个has_and_belongs_to_many关系将这些与courses_years表相关联,但是我想在courses_years表中存储一个额外的字段。

新字段是一个名为“强制”的布尔值。

这样做有简单或好的方法吗?

2 个答案:

答案 0 :(得分:14)

切换到使用:has_many => :through关联,该关联是专门为您需要连接模型时设计的。 ActiveRecord Associations Rails Guide中有更多详细信息。

答案 1 :(得分:12)

您想要一个连接模型。我称之为“CoursesYear”,因为那时你不需要改变你的表名,但如果你愿意,你也可以将所有数据移动到另一个模型。您的模型将按如下方式设置:

class Courses < ActiveRecord::Base
  has_many :courses_years
  has_many :years, :through => :courses_years
end

class Years < ActiveRecord::Base 
  has_many :courses_years
  has_many :courses, :through => :courses_years
end

class CoursesYears < ActiveRecord::Base
  belongs_to :course
  belongs_to :year
end

每当您需要属性(在这种情况下是强制性的)时,您通常会通过连接模型访问它。如果您想查找特定年份的所有必修课程,请回答here