1

我正在创建一个'工作簿' ruby​​ on rails 应用程序。基本上,用户会阅读一两段,然后根据他们阅读的内容回答一些问题。

我不确定如何建模。纸质工作簿有很多页,每一页都有很多段落。我应该完全按照物理形式建模还是应该简化模型?

我最大的问题是如何保存状态,以便用户可以在提交部分作业后更新他们的工作簿和/或进行更正?

4

2 回答 2

2

我认为这些关系对你有用:

class WorkBook
  has_many :pages

class Page
  belongs_to :work_book
  has_many :paragraphs

class Paragraph
  belongs_to :page
  has_many :questions

class Question
  belongs_to :paragraph
  has_many :answers

class Answer
  belongs_to :question
  belongs_to :user

class User
  has_many :answers
  has_many :answered_questions, class_name: 'Question', through: :answers

如果您想更好地控制您的答案(例如 value_string、value_float、value_boolean 等),我建议您添加一个额外的模型“AnswerValue”。

在这种情况下,您可能会觉得模型太多,但相信我,它使您的应用程序灵活,并允许您在每个模型/关系上添加更多“细粒度”功能。

具有这些关系的扩展:您可以添加一个模型“AnswerCorrection”,它的作用类似于一个答案,但可以在用户更新它的工作簿后保存另一个值。

希望这可以帮助!

于 2013-10-18T15:23:03.193 回答
0

我会去做这样的事情:

class PaperWork < ActiveRecord::Base
  has_many :pages
  has_many :paragraphs, through: :pages
end

class Page < ActiveRecord::Base
  belongs_to :paper_work
  has_many :paragraphs
end

class Paragraph
  belongs_to :page
  belongs_to :paper_work, through: :page
end

然后你可以围绕这个想法对分配进行建模:

class Asignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :paragraph
  # attributes: description, status(pending, completed, etc.)
end
于 2013-10-18T15:22:56.173 回答