在Web表单中保存和检索状态

时间:2013-10-18 15:15:01

标签: ruby-on-rails ruby

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

我不确定如何对此进行建模。论文工作书有很多页面,每页都有很多段落。 我应该完全按照物理形式对其进行建模,还是应该简化模型?

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

2 个答案:

答案 0 :(得分: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”,它可以像一个答案,但是在用户更新它的工作簿之后可以保存另一个值。

希望这有帮助!

答案 1 :(得分: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