我正在开发一个具有多年模型和课程模型的应用程序。目前有一个has_and_belongs_to_many关系将这些与courses_years表相关联,但是我想在courses_years表中存储一个额外的字段。
新字段是一个名为“强制”的布尔值。
这样做有简单或好的方法吗?
答案 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。