2014-01-19 65 views
0

我有以下代碼:Rails的「創建或更新」模式

FluidsurveysSurvey.all do |survey| 
    ResponseSummary.where(:survey_id => survey.id).first_or_create do |response_summary| 
    response_summary.count = count 
    end 
end 

我認爲,這要麼找到ResponseSummary與給定survey.id,或創建並添加count。問題是無論如何我都想更新count。因此,如果找到具有該survey_id的ResponseSummary,請更新count。否則,請創建ResponseSummary並更新count。我正在使用Rails 4.0。

回答

0

如果你想在新創建的帳戶述略ID:

FluidsurveysSurvey.all do |survey| 
    response = ResponseSummary.find_or_create_by_servey_id(survey.id) 
response.update_column(:count, count) 
end 

如果你不希望在新創建的帳戶servey_id:

FluidsurveysSurvey.all do |survey| 
    response = ResponseSummary.find_by_servey_id(survey.id)||ResponseSummary.create 
response.update_column(:count, count) 
end 
+0

謝謝 - 我會用類似的東西去第一種方法,這似乎應該有一個「find_or_update_by」方法在rails中。無論如何,謝謝你的提示! – Luigi