2013-03-10 36 views
0

在我的應用程序中,我有一個Question模型和一個QuestionResult模型。它們通過Question has_one QuestionResult相關,我試圖讓Rails在創建Question條目時自動創建其相關的QuestionResult條目。使用before_create在db中自動創建相關對象

這是我的問題模型曾嘗試:

before_create :create_result_record_and_populate_difficulty 

has_one :question_result, :dependent => :destroy 

def create_result_record_and_populate_difficulty 
    self.build_question_result(:current_difficulty => initial_difficulty) 
end 

最初的困難簡直就是裏面我是用設置在相關QuestionResult模型當前困難問題的模型的屬性。我知道該方法被調用,因爲我已經在方法中放置了一個「raise」語句,並且當我運行「rake db:seed」來添加一些問題時觸發異常。

但是,即使數據庫種子成功,也沒有在數據庫中發現QuestionResult條目。

這應該怎麼辦?請幫助啓發我:)

回答

0

您正在使用構建新對象而不將其保存到數據庫的build方法。嘗試:

def create_result_record_and_populate_difficulty 
    self.create_question_result(:current_difficulty => initial_difficulty) 
end 

create方法實際上是將新記錄插入到數據庫中。對於has_one關係,ActiveRecord提供了一個創建和構建方法。見http://guides.rubyonrails.org/association_basics.html#has_one-association-reference

+0

感謝您的回覆。其實我用build是因爲我使用的是before_create方法。如果我使用create而不是使用before_create構建,它會抱怨,因爲Question對象不會被分配一個id,這是QuestionResult對象的必需字段。一旦在Question對象上調用保存,它也會自動保存QuestionResult對象。然而,你的答案幫助我找到了問題 - 這是一個額外的QuestionResult.deleteAll在我的seeds.rb謝謝! – nightscent 2013-03-11 14:38:01

相關問題