【发布时间】:2011-01-20 15:13:58
【问题描述】:
我正在开发一个应用程序,具有年份模型和课程模型。目前有一个 has_and_belongs_to_many 关系将这些与 course_years 表联系起来,但是我想在 courses_years 表中存储一个额外的字段。
新字段是一个名为“强制”的布尔值。
有没有简单或好的方法来做到这一点?
【问题讨论】:
标签: ruby-on-rails
我正在开发一个应用程序,具有年份模型和课程模型。目前有一个 has_and_belongs_to_many 关系将这些与 course_years 表联系起来,但是我想在 courses_years 表中存储一个额外的字段。
新字段是一个名为“强制”的布尔值。
有没有简单或好的方法来做到这一点?
【问题讨论】:
标签: ruby-on-rails
切换到使用:has_many => :through 关联,该关联专为您需要连接模型而设计。 ActiveRecord Associations Rails Guide有更多详情。
【讨论】:
您想要一个连接模型。我将其称为“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。
【讨论】: