在一个使用mysql数据库的rails 3应用程序中,我正在创建一个学术测试。以下是测试特性。
- 多个选择
- 仅由整数组成的93个问题与选定答案相关联
- 学生将多次重新参加考试并更改答案
- 在重考之前的答案将被重新加载到页面,更改,然后再次存储。
- 每页有10个问题
- 当每个页面完成时,应保存响应。这将提供测试的便利,而不必一次完成。
- 除了"下一页"按钮外,还将有一个"上一页"按钮
我有几个问题:
我应该有一个数据库记录,每个答案将存储student_id, question_id和答案?还是……每个学生都有一个数据库记录,其中包含student_id和每个问题答案的所有字段?
问题将不是静态的。根据我们的结果,我们计划修改问题。我们将从测试中删除一些问题,但保留问题和答案用于统计研究。这意味着我们将用新的id创建新的问题。我们必须小心地将当前的问题与适当的答案配对。在我看来,最可靠的方法是对每个页面进行硬编码,而不是在一系列问题和数据中来回循环。你同意还是不同意?
谢谢。
-
我肯定会有一个数据库记录的每个答案。这样,无论你添加或删除问题都无关紧要。答案仍将与正确的用户和问题相关联。
-
我不明白为什么你的页面应该是静态的。您可以有一个问题模型,该模型具有一个字段,用于指示问题是否处于活动状态。你甚至可以用这个来求可能的答案。
我将像这样建模:
class User < ActiveRecord::Base
has_many :user_answers
end
class Question < ActiveRecord::Base
has_many :user_answers
has_many :answers
end
class Answer < ActiveRecord::Base
has_many :user_answers
belongs_to :question
end
class UserAnswer < ActiveRecord::Base
belongs_to :user
belongs_to :question
belongs_to :answer
end