2012-10-26 33 views
1

我正在構建在線測試應用程序。在我的應用程序中,一個問題可以是真/假問題,單選(只接受一個答案),多選(接受許多答案)。我創建模型:Ruby on Rails - 定義答案的方式在模型中是真/假答案

class Question < ActiveRecord::Base 
    has_many :answers 
end 

class Answer < ActiveRecord::Base 
    belongs_to :question 
end 

問題車型將擁有一個question_type_id檢查它是T/F,單一或多個選擇。

答案模型將有一個名爲content的列輸入文本,我將有一個名爲correct的布爾列來知道哪個答案被接受。對於單選題和多選題,我認爲答案是文字可以存儲在content列中,但是對於True/False問題,如果我只在content列中存儲的答案類似'True','False'並在correct列中設置了一個True for answer被接受?我不知道另一個更好的方法來處理真/假問題,任何人都可以幫助我嗎?

回答

1

以字符串形式存儲布爾值似乎是實現你想要的最合理的方式。我建議在保存時對值進行標準化,以便在獲取答案時真和假總是看起來一樣。

+0

你可以讓我明確什麼是'保存價值正常化'? – Thanh

+0

例如,用戶A輸入「是」,用戶B輸入「T」,但您檢查的值始終是字符串「TRUE」。當他們提交表單時,您的應用可以將任何意味着相同內容的值轉換爲「真」,以使所有T/F答案統一。 – adamdunson

+0

好吧,我現在明白了,謝謝你的幫助:) – Thanh

0

既然我已經做了這種應用程序之前,我可以幫你的....

你應該在不同的數據庫中的問題區分開來的第一次...假設我們給IDS他們再我們

0爲T/F問題 1唯一正確的MCQ 2多個正確MCQ

一旦你做到了這一點,你需要有一個名爲作爲選擇不同的模式,

問題有許多選項和問題必須通過選項

在期權模型,我們應該4列假設一個答案(選項A,B,C,d),它是一個四個選擇題......

+0

是的,我有一個question_type三種問題的模型。但是用你的建議,如果我有超過4個選擇,那麼我必須在選項模型中創建更多列?正如我所說,一個問題的多項選擇將有更多的一個接受的答案,不只是一個:( – Thanh

+1

我們可以改變問題和答案之間的關聯has_many:答案:通過:選項,然後它應該按預期工作因爲has_many可能有一個或多個關聯對象... :) –

+0

如果你定義了has_many:答案通過:選項,我認爲選項模型應該有一個列'option_id',但你定義了4列,意味着一個選項有4個答案列,而不是4答案ID,那麼你可以設置正確的option_id的問題? – Thanh