合并模型关联数据轨道

时间:2014-03-26 18:29:31

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有一个有很多报告的模型User。 每个Report都有许多Records

我想合并2个报告,将所有记录report_id作为第二个记录中的第一个记录。

目前我这样做了,但我认为有更快的方法,这需要太长时间!

    reports = params[:reports]
    to_merge_report = Report.find(params[:to_merge_report])

    reports.each do |report, value|
        r = Report.find(value)
        r.records.each do |record|
            record.report = to_merge_report
            record.save!
        end
        r.destroy
    end

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为您只需更改第二个报告记录中的report_id,以便每个记录都指向第一个报告而不是第二个报告。

首先,将id_1设置为等于第一个报告的ID,将id_2设置为等于第二个报告的ID。

则...

first_report = Report.find(id_1)
first_set_of_records = first_report.records

second_report = Report.find(id_2)
second_set_of_records = second_report.records

second_set_of_records.each |record|
  record.report_id = first_report.id
  record.save
end