diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index e6f72e5c..76b437a4 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -36,7 +36,7 @@ class DmsfFile < ActiveRecord::Base belongs_to :dmsf_folder belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id' - has_many :dmsf_file_revisions, -> { order("#{DmsfFileRevision.table_name}.major_version DESC, #{DmsfFileRevision.table_name}.minor_version DESC, #{DmsfFileRevision.table_name}.updated_at DESC") }, + has_many :dmsf_file_revisions, -> { order("#{DmsfFileRevision.table_name}.id DESC") }, :dependent => :destroy has_many :locks, -> { where(entity_type: 0).order("#{DmsfLock.table_name}.updated_at DESC") }, :class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index f0963513..6df8987e 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -83,11 +83,7 @@ class DmsfFileRevision < ActiveRecord::Base errors[:base] << l(:error_at_least_one_revision_must_be_present) return false end - dependent = DmsfFileRevision.where(:source_dmsf_file_revision_id => self.id).all - dependent.each do |d| - d.source_revision = self.source_revision - d.save! - end + if commit self.destroy else @@ -104,6 +100,11 @@ class DmsfFileRevision < ActiveRecord::Base end def destroy + dependent = DmsfFileRevision.where(:source_dmsf_file_revision_id => self.id).all + dependent.each do |d| + d.source_revision = self.source_revision + d.save! + end if Setting.plugin_redmine_dmsf['dmsf_really_delete_files'] dependencies = DmsfFileRevision.where(:disk_filename => self.disk_filename).all.count File.delete(self.disk_file) if dependencies <= 1 && File.exist?(self.disk_file)