2012-02-02 158 views
0

我正在創建一個測驗應用程序。這是我的模特。在創建相同模型時創建has_many和belongs_to關係

答案

class Answer < ActiveRecord::Base                      
belongs_to :question 
end 

問題

class Question < ActiveRecord::Base 
has_many :answers 
belongs_to :correct_answer, :class_name=>"Answer" 
accepts_nested_attributes_for :answers, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true 
end 

我想有一個嵌套的屬性形式使用railscast 196和197的東西。這樣可以創建/編輯時可以無限添加並刪除。

我可以用很好的答案來創建問題。問題是創建correct_answer字段。由於答案尚未保存,所以沒有id放入correct_answer_id表單中。有任何想法嗎?

回答

0

我沒有看到correct_answer字段在Question類中的原因。爲什麼不添加一個布爾列到答案表?然後,您可以執行類似Question.answers.find(correct:true)的操作來獲取包含問題所有正確答案的集合。然後你可以有多個正確答案的問題。

+0

DB明智地在問題中有correct_answer_id意味着我不必遍歷答案以獲得正確答案 – user1169547 2012-02-02 03:44:31

+0

不,這是不正確的。您可以使用find從數據庫中選擇正確的問題。這將是一個查詢,並將返回一個元素。即使您在問題模型中存儲了正確的ID,您仍然需要查詢答案數據庫來解決實際問題。在Question模型中存儲正確答案確實是一個糟糕的設計。模型應該是你的程序的封裝元素。不要混合問題和答案。 – Max 2012-02-02 04:39:08

相關問題