Ruby on rails 如何建模和集成rails多选项测验?

Ruby on rails 如何建模和集成rails多选项测验?,ruby-on-rails,forms,model-view-controller,database-design,Ruby On Rails,Forms,Model View Controller,Database Design,我正在尝试制作一个小应用程序,用户可以在其中注册、登录,并能够出于教育目的查看和交互问题 我可以将一切可视化,但我很难将其转换为实际代码 我知道一个问题模型会有 Question Title - as a string or text Question Answer 1 - as a string or text Question Answer 2 - as a string or text Question Answer 3 - as a string or text Question

我正在尝试制作一个小应用程序,用户可以在其中注册、登录,并能够出于教育目的查看和交互问题

我可以将一切可视化,但我很难将其转换为实际代码

我知道一个问题模型会有

Question Title - as a string or text

Question Answer 1 - as a string or text

Question Answer 2 - as a string or text

Question Answer 3 - as a string or text

Question Answer 4 - as a string or text

Question CORRECT ANSWER 5 - as a string or text
当然,我知道强参数也必须接受这些属性(参数?)

如何创建一个模型,其中new-question.html.erb表单将传递5个选项的数组,并能够将其中一个选项标记为正确?最重要的是,我想在每一个页面上随机选择答案


任何帮助或指导都是有帮助的。MichaelHartl的教程很棒,但我不确定我是否遗漏了一些东西,或者东西没有点击

如果答案的数量始终为5或更少,那么使用带有5个文本字段的问题模型就没有问题。您也可以默认第一个答案是正确的,并在显示问题和答案的视图中将答案洗牌

rails g model Question title:text correct_answer:text answer_1:text answer_2:text ...

您才刚刚开始,所以不要为问题、答案和嵌套形式的单独模型操心太多。保持简单。

如果答案的数量总是5个或更少,那么使用带有5个文本字段的问题模型就没有问题。您也可以默认第一个答案是正确的,并在显示问题和答案的视图中将答案洗牌

rails g model Question title:text correct_answer:text answer_1:text answer_2:text ...

您才刚刚开始,所以不要为问题、答案和嵌套形式的单独模型操心太多。保持简单。

数据库模式示例

  create_table "questions", force: :cascade do |t|
    t.references "quiz_id"
    t.string   "question_word"
    t.string   "option1"
    t.string   "option2"
    t.string   "option3"
    t.string   "option4"
    t.integer  "answer",            default: 0
    t.integer  "score",             default: 2
    t.datetime "created_at",                    null: false
    t.datetime "updated_at",                    null: false
  end

  create_table "quizs", force: :cascade do |t|
    t.string   "quiz_name"
    t.string   "notes"
    t.datetime "created_at",                    null: false
    t.datetime "updated_at",                    null: false
  end

  create_table "user_quiz", force: :cascade do |t|
    t.references  "user_id"
    t.references  "quiz_id"
    t.integer  "score",          default: 0
  end
示例模型关系,有4个模型,用户、测验、问题、用户测验

  class Quiz < ActiveRecord::Base
    has_many   :questions
    has_many   :user_quizs
    has_many   :users, :through   => :user_quizs
  end

  class User < ActiveRecord::Base
    has_many   :user_quizs
    has_many   :quizs, :through   => :user_quizs
  end

  class Question < ActiveRecord::Base
    belongs_to :quiz
  end

  class UserQuiz  < ActiveRecord::Base
    belongs_to :user
    belongs_to :quiz       
  end
课堂测验:用户
结束
类用户:用户
结束
类问题

为了让用户选择,您可以使用单选按钮标记,下面是数据库模式的示例

  create_table "questions", force: :cascade do |t|
    t.references "quiz_id"
    t.string   "question_word"
    t.string   "option1"
    t.string   "option2"
    t.string   "option3"
    t.string   "option4"
    t.integer  "answer",            default: 0
    t.integer  "score",             default: 2
    t.datetime "created_at",                    null: false
    t.datetime "updated_at",                    null: false
  end

  create_table "quizs", force: :cascade do |t|
    t.string   "quiz_name"
    t.string   "notes"
    t.datetime "created_at",                    null: false
    t.datetime "updated_at",                    null: false
  end

  create_table "user_quiz", force: :cascade do |t|
    t.references  "user_id"
    t.references  "quiz_id"
    t.integer  "score",          default: 0
  end
示例模型关系,有4个模型,用户、测验、问题、用户测验

  class Quiz < ActiveRecord::Base
    has_many   :questions
    has_many   :user_quizs
    has_many   :users, :through   => :user_quizs
  end

  class User < ActiveRecord::Base
    has_many   :user_quizs
    has_many   :quizs, :through   => :user_quizs
  end

  class Question < ActiveRecord::Base
    belongs_to :quiz
  end

  class UserQuiz  < ActiveRecord::Base
    belongs_to :user
    belongs_to :quiz       
  end
课堂测验:用户
结束
类用户:用户
结束
类问题

让用户选择您可以使用单选按钮标签,这里是

默认第一个答案是什么意思?理想情况下,用户可以单击“显示答案”按钮,在该按钮上可以显示正确的答案,这将如何考虑?谢谢。我的意思是假设正确答案是第一个,所以你不需要额外的字段来记录哪个答案是正确的。我更新了答案让它更清楚。你说默认第一个答案是什么意思?理想情况下,用户可以单击“显示答案”按钮,在该按钮上可以显示正确的答案,这将如何考虑?谢谢。我的意思是假设正确答案是第一个,所以你不需要额外的字段来记录哪个答案是正确的。我更新了答案,让它更清楚。