Ruby on Rails 的新增内容 - 模型/迁移说明



很抱歉提出基本的基本问题,但我在理解 RoR 文档时遇到了一些麻烦。

假设我有 3 个模型——学生、班级和Enrolled_in。如果不清楚,学生将注册课程,因此Enrolled_in应将学生和班级作为外键。我为每个表生成了模型,但我对应该将什么放入关联的迁移文件与每个表的关联模型文件感到困惑。我是否在迁移文件中指定表的列,以及在模型中指定关键约束?

如果有人能澄清这一点,或者告诉我他们将如何解决我发布的示例问题,那将非常有帮助。谢谢。

首先,为了遵循约定,模型名称应该是EnrolledIn,而不是Enrolled_in。 更好的是,将其更改为Enrollment或作为名词具有明确含义的东西。 而且,尝试使用Class(已经是一个 ruby 对象)作为模型名称时,您也会遇到麻烦。 也许将其更改为Course或类似的东西。

除此之外,您应该定义迁移中的所有列。 您可以像这样定义enrolled_ins表:

add_table :enrolled_ins do |t|
  t.references :student
  t.references :course        # I'm using course instead of class as noted above
end

references快捷方式将添加 :student_id 和 :course_id 作为整数字段。

在模型文件中,您将拥有:

# student.rb
class Student < ActiveRecord::Base
  has_many :enrolled_ins
  has_many :courses, :through => :enrolled_ins
end
# course.rb
class Course < ActiveRecord::Base
  has_many :enrolled_ins
  has_many :students, :through => :enrolled_ins
end
# enrolled_in.rb
class EnrolledIn < ActiveRecord::Base
  belongs_to :student
  belongs_to :course
end

最新更新