2014-03-26 72 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