1

我正在构建一个在线考试应用程序,该应用程序的目的是,它可以让老师创建课程,课程主题和问题(每个问题都有标记),并且老师可以为学生创建考试,学生可以在线进行考试。由于我会使用很多单词examinationand examinations,所以我将其简称为examand exams

关于我的应用的业务:

  • 老师可以创建话题,问题和每个话题,问题只属于一位老师。
  • 老师可以general exam为一门课程创建一个,它会从question bank.
  • 由此general exam,教师将生成number of examsnumber of students需要做课程考试的对应。考试将在生成后自动随机分配给学生。
  • 生成的考试会有不同number of questions,但total mark of questions每次考试的考试都是一样的。例如,在生成考试后:

    Student A take exam with 20 questions, student B take exam only has 10 questions, it means maybe every question in exam of student A only has mark is 1, but questions in exam of student B has mark is 2.

    所以 20 = 10 x 2,这就是我的意思total mark of questions in every examination will be the same.

我设计了以下表格:

  • 用户(包括学生和教师帐户)
  • 课程
  • 话题
  • 问题
  • 回答

当学生做考试时,我认为它会有表格:

  • 结果,包含列:user_id、exam_id、mark

这是我想我会创建的表general examination

  • GeneralExamination,列:name、description、dateStart、dateFinish、numberOfMinutes、maxMarkOfExam

但现在我不知道如何在用户(学生)、问题、考试、普通考试之间建立关联。总结一下关联:

  • 学生可以参加很多考试。
  • 学生只能参加分配给他们的考试。
  • Ageneral exam有很多问题,从题库中获得,但每次考试都会从general exam生成的问题中获取问题。
  • Exams 属于 one general examination,用于生成它们。

我怎样才能建立这些协会?

4

2 回答 2

3
Course has_many :topics belongs_to :teacher
Topic has_many :questions belongs_to :course belongs_to :teacher
Question belongs_to :teacher belongs_to :topic has_and_belongs_to_many :general_exams has_and_belongs_to_many :exams
GeneralExam belongs_to :teacher belongs_to :course has_many :exams has_and_belongs_to_many :questions
Exam belongs_to :general_exam belongs_to :student has_and_belongs_to_many :questions has_one :exam_result
Student has_many :exams has_many :exam_results, :through => :exams
ExamResult belongs_to :exam belongs_to :teacher

class QuestionBank < ActiveRecord::Base
  belongs_to :course
  def questions
    Question.where("topic_id IN (?)", course.topic_ids)
  end
end
于 2012-11-09T13:05:28.317 回答
1

我正在做类似的事情,请随时学习、分叉和贡献。

于 2012-11-09T15:10:50.643 回答