【问题标题】:Ruby on Rails - The way to define answers is true / false in model AnswerRuby on Rails - 在模型答案中定义答案的方式是真/假
【发布时间】:2012-10-26 04:53:12
【问题描述】:

我正在构建一个在线测试应用。在我的应用程序中,一个问题可以是真/假问题、单选(只接受一个答案)、多选(接受多个答案)。我创建模型:

class Question < ActiveRecord::Base
  has_many :answers
end

class Answer < ActiveRecord::Base
  belongs_to :question
end  

Question 模型将有一个 question_type_id 来检查它是 T/F、Single 还是 Multi 选项。

Answer 模型将有一个名为 content 的输入文本列,我将有一个名为 correct 的布尔列,以了解哪个答案被接受。对于单选题和多选题,我认为答案是文本可以存储在content 列中,但是对于真/假问题,如果我只存储答案是像“真”、“假”这样的文本是个好主意content 列并将答案设置为 True 以在 correct 列中接受答案?我不知道另一种更好的方法来处理真/假问题,有人可以帮助我吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 database-design


    【解决方案1】:

    将布尔值存储为字符串似乎是完成您想要的最合理的方式。我建议在保存时对值进行规范化,以便在您获取答案时 true 和 false 始终看起来相同。

    【讨论】:

    • 你能告诉我什么是“标准化保存时的值”吗?
    • 例如,用户 A 输入“yes”,用户 B 输入“T”,但您检查的值始终是字符串“TRUE”。当他们提交表单时,您的应用可以将任何表示相同含义的值转换为“TRUE”,以使所有 T/F 答案统一。
    【解决方案2】:

    既然我已经做了这种应用程序,我才能帮助你......

    首先,您应该区分数据库中不同类型的问题...假设我们给它们提供 ID,那么我们就有

    0 表示 T/F 问题 1 代表单次正确 MCQ 2 表示多个正确的 MCQ

    完成此操作后,您需要有一个名为 Options 的不同模型,

    问题有很多选项,问题通过选项有一个答案

    在选项模型中,我们应该4列假设(选项A,B,C,D)它是一个四选择题......

    【讨论】:

    • 是的,我有一个 question_type 模型来解决三类问题。但是根据您的建议,如果我有超过 4 个选择,那么我必须在选项模型中创建更多列吗?正如我所说,一个问题多选将有多个可接受的答案,而不仅仅是一个:(
    • 我们可以将 Question 和 Answer 之间的关联更改为 has_many :answers :through :options 然后它应该按预期工作因为 has_many 可能有一个或多个关联对象...:)
    • 如果您定义了 has_many :answers throught :options,我认为 Option 模型应该有一个列 option_id,但您定义了 4 列,意味着一个选项有 4 个答案列,而不是 4 个答案 id,所以你可以为问题设置正确的 option_id 吗?
    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2010-10-25
    • 2022-01-11
    • 1970-01-01
    • 2020-08-25
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多