我正在使用rails应用程序进行测验。我有三个模型用于创建测验:测验,问题和选择。测验有问题,问题有很多选择,1个选择是正确的。
关系如下:
Quiz
belongs_to: course
Question
belongs_to: quiz
has_many: choices
Choice
belongs_to: question
我来自C ++的背景,我在C ++中构建它的方式是有一个测验类和一个问题类。我不会仅仅为了选择而制作一个完整的课程,因为他们需要持有的是一个字符串(选择)以及它是否是正确的选择。我的问题是,我是否应该选择模型?
答案 0 :(得分:2)
Rails协会起初可能很棘手。说belongs_to
表示is the child of
,就像has_one
表示is the parent of one
一样。我建议采用如下结构:
Course
has_many :quizzes
Quiz
belongs_to :course
has_many :questions
Question
belongs_to :quiz
has_many :choices
Choice
belongs_to :question
创建关联时,这意味着您通过子关联上的object_id
将两个表关联在一起。大多数表(如果不是全部)都有一个附带的模型。创建迁移(有助于创建模式的Ruby类)时,请确保正确包含必要的关联和外键。
有关协会的更多信息,请访问:Rails Guides: Active Record Associations
但是,通过这些关联,您无法重复使用其他问题的选择。通过这种方式,我的意思是可以使用相同的字符串创建另一个选择对象,但它将具有不同的id
。要指定选项是否正确,您可以为correct
或true
添加false
属性标记。由于选择已经有question_id
,您可以确定它们会在考试结果中正确显示!
您可以在此处查找迁移:Rails Guides: Active Record Migrations
答案 1 :(得分:1)
是的,您需要一个Choice
型号。但您需要更正Question
模型中的 关联
#Question
belongs_to :quiz
has_many :choices #as question will have many choices provided
belongs_to :examination