2014-01-19 4 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, несмотря ни на что. Итак, если найден ResponseSummary с данным опросом, обновите count. В противном случае создайте ResponseSummary и обновите count. Я использую Rails 4.0.

ответ

0

Если вы хотите идентификатор в изыскательских вновь созданной учетной записи:

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. В любом случае, спасибо за советы! – Luigi

Смежные вопросы