2017-11-03 14 views
-1

彼らは、レールのパラダイムが自分自身を繰り返さないこと、つまり「ドライ」と言います。だから、私はこのクイズアプリで作業しています。そして、MVCのやり方と、それがどういったものになるのかを徐々に理解したので、より良いコードを書いてみたいと思います。それでは、私は自分のスキーマから以前行ったこの例を見てみましょう:あなたが見ることができるようにこのRailsクイズモデルをより効率的に構造化する方法は何ですか?

create_table "posts", force: :cascade do |t| 
    t.text "title" 
    t.text "text" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "user_id" 
    t.text "answer_choice" 
    t.text "answer_choice_2" 
    t.text "answer_choice_3" 
    t.text "answer_choice_4" 
    t.text "answer_choice_5" 
    t.text "correct_answer_choice" 
    t.string "slug" 
    t.index ["slug"], name: "index_posts_on_slug", unique: true 
    end 

は、answer_choice、その後、_2、_3、_4、_5とcorrect_answer_choice追加することが私にとって非常に醜いと非効率的なようです。回答が2つしかない投稿を追加したいのですが?それとも3つ?おそらくもっとある?

このような状況を改善するには、どのような方法が適していますか。

+0

これは動作するコードであれば、質問に答えるための残りの基準(私が慣れていない)を満たしていれば、この質問はCodeReviewSEでよく聞かれるかもしれません。 – Lexi

+0

すべての回答を 'answers'という1つの' JSON'カラムに入れます –

+0

@NickM、しかし私は私のレールアプリでJSONを使用していませんか? – mazing

答えて

2

投稿ごとにテーブルにgiven_answercorrect_answerの列だけがあれば、もっと簡単になります。あなたのgiven_answer列のために、あなたはあなたの形式で選択肢を表示するためにoptions_for_selectを使用することができます提出した後、あなたは、2つの値が一致かどうかを確認するためにif correct_answer == given_answerを照会することができ

options_for_select([ "Choice1", "Choice2", etc... ]) 

関連する問題