]> source.dussan.org Git - redmine.git/commitdiff
Merged r3668 from trunk.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 29 Apr 2010 22:05:49 +0000 (22:05 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 29 Apr 2010 22:05:49 +0000 (22:05 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3697 e93f8b46-1217-0410-a6f0-8f06a7374b81

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

index 69b253c6882e43c17b1d4cdefbc083cdcc57fcee..d11541ec7fa8c9852d6abb89ccb93fa3b2b36902 100644 (file)
@@ -46,11 +46,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 bc0e17e22fdd2d8e342ffefe863897d8d5d5da73..9741ecc99d12579c1bdb2367bdc1f2733c64a0a7 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
@@ -155,10 +154,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