OSDN Git Service

Transaction and performance improvement on workflow copy when creating a new tracker.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 7 Dec 2007 13:35:38 +0000 (13:35 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 7 Dec 2007 13:35:38 +0000 (13:35 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@958 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/trackers_controller.rb

index 0fc91b5..46edea5 100644 (file)
@@ -37,8 +37,10 @@ class TrackersController < ApplicationController
     if request.post? and @tracker.save
       # workflow copy
       if !params[:copy_workflow_from].blank? && (copy_from = Tracker.find_by_id(params[:copy_workflow_from]))
-        copy_from.workflows.each do |w|
-          @tracker.workflows << w.clone
+        Workflow.transaction do
+          copy_from.workflows.find(:all, :include => [:role, :old_status, :new_status]).each do |w|
+            Workflow.create(:tracker_id => @tracker.id, :role => w.role, :old_status => w.old_status, :new_status => w.new_status)
+          end
         end
       end
       flash[:notice] = l(:notice_successful_create)