对不起基本的基本问题,但我在理解RoR文档时遇到了一些麻烦。
说我有3个模型 - 学生,课程和注册_in。如果不清楚,学生将注册课程,因此Enrolled_in应将学生和课程作为外键。我为这些中的每一个生成了模型,但我很困惑我应该将相关的迁移文件与每个表的关联模型文件放在一起。我是否在迁移文件中指定了表的列,以及模型中的键约束?
如果有人可以澄清这一点,或者告诉我他们将如何解决我发布的示例问题,那将非常有帮助。感谢。
答案 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