Sha256: a8d3cae1541f111476b06f1345ba42755d264222c571e87a563744949eecb854

Contents?: true

Size: 969 Bytes

Versions: 9

Compression:

Stored size: 969 Bytes

Contents

module SoftDeletion
  module Setup

    def self.included(base)
      base.extend ClassMethods
    end

    module ClassMethods
      # When you call this, it will include the core module and its methods
      #
      # Options:
      #
      # *default_scope*, value: true/false
      # If true, it will also define a default scope
      #
      # It will check if the column "deleted_at" exist before applying default scope
      def has_soft_deletion(options={})
        default_options = {:default_scope => false}

        include SoftDeletion::Core

        options = default_options.merge(options)

        if options[:default_scope] && table_exists? && column_names.include?("deleted_at")
          # Avoids a bad SQL request with versions of code without the column deleted_at (for example a migration prior to the migration
          # that adds deleted_at)
          default_scope :conditions => { :deleted_at => nil }
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
soft_deletion-0.4.5 lib/soft_deletion/setup.rb
soft_deletion-0.4.4 lib/soft_deletion/setup.rb
soft_deletion-0.4.3 lib/soft_deletion/setup.rb
soft_deletion-0.4.2 lib/soft_deletion/setup.rb
soft_deletion-0.4.1 lib/soft_deletion/setup.rb
soft_deletion-0.4.0 lib/soft_deletion/setup.rb
soft_deletion-0.3.0 lib/soft_deletion/setup.rb
soft_deletion-0.2.1 lib/soft_deletion/setup.rb
soft_deletion-0.2.0 lib/soft_deletion/setup.rb