Ruby on Rails的新手 - 模型/迁移澄清?

时间:2012-09-30 01:52:19

标签: ruby-on-rails

对不起基本的基本问题,但我在理解RoR文档时遇到了一些麻烦。

说我有3个模型 - 学生,课程和注册_in。如果不清楚,学生将注册课程,因此Enrolled_in应将学生和课程作为外键。我为这些中的每一个生成了模型,但我很困惑我应该将相关的迁移文件与每个表的关联模型文件放在一起。我是否在迁移文件中指定了表的列,以及模型中的键约束?

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

1 个答案:

答案 0 :(得分:3)

首先,要遵循惯例,模型名称应为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