我正在创建一个'工作簿' ruby on rails 应用程序。基本上,用户会阅读一两段,然后根据他们阅读的内容回答一些问题。
我不确定如何建模。纸质工作簿有很多页,每一页都有很多段落。我应该完全按照物理形式建模还是应该简化模型?
我最大的问题是如何保存状态,以便用户可以在提交部分作业后更新他们的工作簿和/或进行更正?
我正在创建一个'工作簿' ruby on rails 应用程序。基本上,用户会阅读一两段,然后根据他们阅读的内容回答一些问题。
我不确定如何建模。纸质工作簿有很多页,每一页都有很多段落。我应该完全按照物理形式建模还是应该简化模型?
我最大的问题是如何保存状态,以便用户可以在提交部分作业后更新他们的工作簿和/或进行更正?
我认为这些关系对你有用:
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”,它的作用类似于一个答案,但可以在用户更新它的工作簿后保存另一个值。
希望这可以帮助!
我会去做这样的事情:
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