Sha256: c151155de27210e2d4d71e87178d09bc6a3a6f19fa1e85bc9bdb15bbbf561587

Contents?: true

Size: 804 Bytes

Versions: 3

Compression:

Stored size: 804 Bytes

Contents

module RecordFilter
  module ActiveRecordExtension
    module ClassMethods

      def filter(&block)
        Filter.new(self, nil, nil, &block)
      end

      def named_filter(name, &block)
        return if named_filters.include?(name.to_sym)
        named_filters << name.to_sym 
        DSL::DSL::subclass(self).module_eval do
          define_method(name, &block)
        end

        (class << self; self; end).instance_eval do
          define_method(name.to_s) do |*args|
            Filter.new(self, name, nil, *args)
          end
        end
      end

      def named_filters
        read_inheritable_attribute(:named_filters) || write_inheritable_attribute(:named_filters, [])
      end
    end
  end
end

ActiveRecord::Base.send(:extend, RecordFilter::ActiveRecordExtension::ClassMethods)

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
aub-record_filter-0.1.4 lib/record_filter/active_record.rb
outoftime-record_filter-0.1.3 lib/record_filter/active_record.rb
outoftime-record_filter-0.1.4 lib/record_filter/active_record.rb