Skip to content

Commit

Permalink
Fix broken soft delete for Rails 3.1
Browse files Browse the repository at this point in the history
  • Loading branch information
jweathers777 committed Dec 6, 2011
1 parent 448d246 commit e39f7b0
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions lib/acts_as_archive.rb
Expand Up @@ -194,19 +194,20 @@ def self.included(base)
unless base.included_modules.include?(InstanceMethods)
base.send :include, InstanceMethods
base.class_eval do
unless method_defined?(:delete_sql_without_archive)
alias_method :delete_sql_without_archive, :delete_sql
alias_method :delete_sql, :delete_sql_with_archive
unless method_defined?(:delete_without_archive)
alias_method :delete_without_archive, :delete
alias_method :delete, :delete_with_archive
end
end
end
end

module InstanceMethods
def delete_sql_with_archive(sql, name = nil)
def delete_with_archive(arel, name = nil, binds = [])
@mutex ||= Mutex.new
@mutex.synchronize do
unless ActsAsArchive.disabled
sql = binds.inject(to_sql(arel)) {|a,e| a.sub(/\$\d+/,quote(e[1]))}
from, where = /DELETE FROM (.+)/i.match(sql)[1].split(/\s+WHERE\s+/i, 2)
from = from.strip.gsub(/[`"]/, '').split(/\s*,\s*/)

Expand All @@ -216,7 +217,7 @@ def delete_sql_with_archive(sql, name = nil)
end
end

delete_sql_without_archive(sql, name)
delete_without_archive(arel, name, binds)
end
end
end
Expand Down

0 comments on commit e39f7b0

Please sign in to comment.