【问题标题】:Add extra data to the join table - Rails向连接表添加额外数据 - Rails
【发布时间】:2011-01-20 15:13:58
【问题描述】:

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

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

有没有简单或好的方法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    切换到使用:has_many => :through 关联,该关联专为您需要连接模型而设计。 ActiveRecord Associations Rails Guide有更多详情。

    【讨论】:

    【解决方案2】:

    您想要一个连接模型。我将其称为“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

    【讨论】:

    • 非常感谢,我选择了 Options 作为连接表的名称。但是,我无法将布尔值添加到我的新课程表单中。有任何想法吗? stackoverflow.com/questions/2328273/…
    • 模型类名应该是单数形式:Courses --> Course;年 --> 年; CoursesYears --> CourseYear
    猜你喜欢
    • 1970-01-01
    • 2012-02-23
    • 2012-01-13
    • 2020-03-04
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多