Sha256: 9db9954afe80e063ee0d77fb4325fd9b7f3ed1fde4991b4a41d759e8eb3cf3f4

Contents?: true

Size: 883 Bytes

Versions: 3

Compression:

Stored size: 883 Bytes

Contents

module WithFilters
  # @private
  module ActiveRecordExtension
    extend ActiveSupport::Concern

    included do
      class << self
        alias_method_chain :inherited, :with_filters
      end

      # Attach the ActiveRecord extensions to children of ActiveRecord that were initiated before we loaded WithFilters.
      self.descendants.each do |descendant|
        descendant.send(:include, WithFilters::ActiveRecordModelExtension) if descendant.superclass == ActiveRecord::Base
      end
    end

    # @private
    module ClassMethods
      # Attaches the ActiveRecord extensions to children of ActiveRecord so we don't pollute ActiveRecord::Base.
      def inherited_with_with_filters(base)
        inherited_without_with_filters(base)
        base.send(:include, WithFilters::ActiveRecordModelExtension) if base.superclass == ActiveRecord::Base
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
with_filters-0.1.2 lib/with_filters/active_record_extension.rb
with_filters-0.1.1 lib/with_filters/active_record_extension.rb
with_filters-0.1.0 lib/with_filters/active_record_extension.rb