From 3dc4dbe302793ae735da15105d713c6d19d2d41e 2010-03-12 14:51:33 From: Jean-Philippe Lang Date: 2010-03-12 14:51:33 Subject: [PATCH] Fixed: error while moving an issue to a project with disabled tracker with SQLite3 (#5049). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3566 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/issue.rb b/app/models/issue.rb index ffce8ea..6f78ff1 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -101,7 +101,7 @@ class Issue < ActiveRecord::Base def move_to(new_project, new_tracker = nil, options = {}) options ||= {} issue = options[:copy] ? self.clone : self - transaction do + ret = Issue.transaction do if new_project && issue.project_id != new_project.id # delete issue relations unless Setting.cross_project_issue_relations? @@ -138,12 +138,12 @@ class Issue < ActiveRecord::Base # Manually update project_id on related time entries TimeEntry.update_all("project_id = #{new_project.id}", {:issue_id => id}) end + true else - Issue.connection.rollback_db_transaction - return false + raise ActiveRecord::Rollback end end - return issue + ret ? issue : false end def priority_id=(pid) diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index f0db47a..cf53697 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -387,6 +387,16 @@ class IssueTest < ActiveSupport::TestCase assert_equal 7, issue.fixed_version_id end + def test_move_to_another_project_with_disabled_tracker + issue = Issue.find(1) + target = Project.find(2) + target.tracker_ids = [3] + target.save + assert_equal false, issue.move_to(target) + issue.reload + assert_equal 1, issue.project_id + end + def test_copy_to_the_same_project issue = Issue.find(1) copy = nil