2012-09-30 30 views
0

很抱歉的基本的,基本的问题,但我有一些麻烦了解RoR的文档。Ruby on Rails新手 - 模型/移植澄清?

说我有3种型号 - 学生,类和Enrolled_in。如果不明确,学生将参加课程,因此Enrolled_in应该将学生和课程作为外键。我为每个模型生成了模型,但是我很困惑我应该将哪些内容放入关联的迁移文件中,而不是每个表的关联模型文件。我是否在迁移文件中指定了表的列,以及模型中的关键约束?

如果有人能澄清这一点,或者告诉我,他们将如何解决这个问题,例如我张贴,这将是真正的帮助。谢谢。

回答

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 
+0

谢谢你这么这么这么多! – user1436111