Rails“创建或更新”模型

时间:2014-01-19 02:12:46

标签: ruby-on-rails model

我有以下代码:

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

我相信这会找到具有给定ResponseSummary的{​​{1}},或者创建它并添加survey.id。问题是我想要更新count无论如何。因此,如果找到具有该survey_id的count,请更新ResponseSummary。否则,请创建count并更新ResponseSummary。我正在使用Rails 4.0。

1 个答案:

答案 0 :(得分:0)

如果您想在新创建的帐户中使用调查ID:

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

如果您不想在新创建的帐户中使用调查ID:

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