Rails测验应用

时间:2015-08-06 18:31:33

标签: ruby-on-rails ruby model associations

我正在使用rails应用程序进行测验。我有三个模型用于创建测验:测验,问题和选择。测验有问题,问题有很多选择,1个选择是正确的。

关系如下:

Quiz 
belongs_to: course

Question
belongs_to: quiz
has_many: choices

Choice
belongs_to: question

我来自C ++的背景,我在C ++中构建它的方式是有一个测验类和一个问题类。我不会仅仅为了选择而制作一个完整的课程,因为他们需要持有的是一个字符串(选择)以及它是否是正确的选择。我的问题是,我是否应该选择模型?

2 个答案:

答案 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。要指定选项是否正确,您可以为correcttrue添加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