2012-08-29 63 views
1

我不知道如何甚至研究這個問題,所以也許一些令人敬畏的rails開發人員可以指出我在正確的方向。rails 3臨時用戶輸入用於比較

我有一個模型,它持有一個問題和正確的答案。在展示視圖中,我希望用戶在輸入字段中輸入他們的答案,並在按下提交時,將他們的答案與模型中的答案進行比較。我不需要保存他們的答案。

想法?

回答

0

你可以使用一個非ActiveRecord模型。事情是這樣的:

class UserAnswer # note that this class doesn't inherit from ActiveRecord::Base 
    attr_accessor :question_id, :answer 

    def initialize(params) 
    @question_id = params[:question_id] 
    @answer = params[:answer] 
    end 

    def correct? 
    q = QuestionAnswerModel.find(self.question_id) 
    q.answer == self.answer 
    end 
end 

然後在你的控制器,你可以做這樣的事情:

user_answer = UserAnswer.new(params) # params contains :question_id and :answer 
user_answer.correct? # returns true or false 
+0

好吧,我會檢查這些想法了。謝謝! – HappaGirl

+0

我做了一些類似於你的建議的東西。感謝你讓我走上了道路! – HappaGirl

0

一個簡單的方法是保存應答確認,只有當它等於答案。

Model: 
    question 
    answer 
    answer_confirmation 

然後按照正常情況繼續製作表格。

在模型中添加

validate :check_answer 

def check_answer 
    errors.add(:answer, "Must be the same as answer confirmation") if answer!= answer_confirmation 
end 
+0

嗯。這將工作has_many協會?很多用戶回答模型的問題? – HappaGirl

+0

添加has_many或user_id不會更改驗證器代碼。驗證程序僅對檢查答案是否與保存或創建前的確認相同感興趣。 – nurettin