Sha256: 0a1b40b266389df12361a4fa5b2f8fa54fbe2d005bc268c0f044126a7784d6ec

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

module Datagrid
  module Filters
    module CompositeFilters

      def self.included(base)
        base.extend         ClassMethods
        base.class_eval do

        end
        base.send :include, InstanceMethods
      end # self.included

      module ClassMethods
        #TODO: decide what to do with cross-orm

        def date_range_filters(field, from_name = :"from_#{field}", to_name = :"to_#{field}")
          filter(from_name, :date) do |date|
            self.scoped(:conditions => ["#{field} >= ?", date])
          end
          filter(to_name, :date) do |date|
            self.scoped(:conditions => ["#{field} <= ?", date])
          end
        end

        def integer_range_filters(field, from_name = :"from_#{field}", to_name = :"to_#{field}")
          filter(from_name, :integer) do |value|
            self.scoped(:conditions => "#{field} >= #{value}")
          end
          filter(to_name, :integer) do |value|
            self.scoped(:conditions => "#{field} <= #{value}")
          end
        end
      end # ClassMethods

      module InstanceMethods

      end # InstanceMethods

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
datagrid-0.5.0 lib/datagrid/filters/composite_filters.rb
datagrid-0.4.1 lib/datagrid/filters/composite_filters.rb
datagrid-0.4.0 lib/datagrid/filters/composite_filters.rb