]> source.dussan.org Git - redmine.git/commitdiff
Do not raise an error when destroying a Version with assigned issues.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 11 Apr 2010 17:47:29 +0000 (17:47 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 11 Apr 2010 17:47:29 +0000 (17:47 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3668 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/versions_controller.rb
app/models/version.rb

index dc1b7eb2b9ce30ddb9b8508f67cb9d6293547945..05c9743eb1699ac96d31c09cbe89e84d95b74f9e 100644 (file)
@@ -80,11 +80,13 @@ class VersionsController < ApplicationController
   end
 
   def destroy
-    @version.destroy
-    redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
-  rescue
-    flash[:error] = l(:notice_unable_delete_version)
-    redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
+    if @version.fixed_issues.empty?
+      @version.destroy
+      redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
+    else
+      flash[:error] = l(:notice_unable_delete_version)
+      redirect_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project
+    end
   end
   
   def status_by
index f9b48fb1117347a78a2e22934d765554ccab1a79..e8a4160084dd641722baa6907012e1cad32988da 100644 (file)
@@ -1,5 +1,5 @@
-# redMine - project management software
-# Copyright (C) 2006  Jean-Philippe Lang
+# Redmine - project management software
+# Copyright (C) 2006-2010  Jean-Philippe Lang
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 class Version < ActiveRecord::Base
-  before_destroy :check_integrity
   after_update :update_issues_from_sharing_change
   belongs_to :project
-  has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id'
+  has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id', :dependent => :nullify
   acts_as_customizable
   acts_as_attachable :view_permission => :view_files,
                      :delete_permission => :manage_files
@@ -156,10 +155,7 @@ class Version < ActiveRecord::Base
     end
   end
   
-private
-  def check_integrity
-    raise "Can't delete version" if self.fixed_issues.find(:first)
-  end
+  private
 
   # Update the issue's fixed versions. Used if a version's sharing changes.
   def update_issues_from_sharing_change