2014-03-26 74 views
0

我有一个模型User有很多报告。 每个Report有很多Records合并模型关联数据轨

我想通过使所有记录report_id作为第一个从第二个报告合并2报告。

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

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 

任何想法?

回答

0

我想你可以在第二个报告的记录中改变report_id,这样每个记录指向第一个报告而不是第二个报告。

首先,设置id_1等于第一报告的ID和​​等于第二报告的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 
+0

没错,这就是我有,但比例为许多报告被合并成一个! –

+0

如果你的问题是如何一次更新很多记录,那么这可能会有所帮助:(http://stackoverflow.com/questions/5200235/rails-save-collection-of-updated-records-all-at-once) – jkdev