Sha256: 4a8e24d5d0f0b98a81a5845b1188a9b428d2878f9c2edb452ccb2b7432d60a31

Contents?: true

Size: 916 Bytes

Versions: 7

Compression:

Stored size: 916 Bytes

Contents

module ActsAsArchive
  module Base
    module Restore

      def self.included(base)
        unless base.included_modules.include?(InstanceMethods)
          base.send :extend, ClassMethods
          base.send :include, InstanceMethods
        end
      end

      module ClassMethods
        
        def copy_from_archive(conditions)
          add_conditions!(where = '', conditions)
          col_names = column_names - [ 'deleted_at' ]
          connection.execute(%{
            INSERT INTO #{table_name} (#{col_names.join(', ')})
              SELECT #{col_names.join(', ')}
              FROM archived_#{table_name}
              #{where}
          })
          connection.execute("DELETE FROM archived_#{table_name} #{where}")
        end
        
        def restore_all(conditions=nil)
          copy_from_archive(conditions)
        end
      end

      module InstanceMethods
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
winton-acts_as_archive-0.1.3 lib/acts_as_archive/base/restore.rb
acts_as_archive-0.2.2 lib/acts_as_archive/base/restore.rb
acts_as_archive-0.2.1 lib/acts_as_archive/base/restore.rb
acts_as_archive-0.2.0 lib/acts_as_archive/base/restore.rb
acts_as_archive-0.1.6 lib/acts_as_archive/base/restore.rb
acts_as_archive-0.1.5 lib/acts_as_archive/base/restore.rb
acts_as_archive-0.1.4 lib/acts_as_archive/base/restore.rb