Module: RansackActiveRecordEnhancer::EnhancedWhere

Defined in:
lib/ransack_active_record_enhancer/enhanced_where.rb

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/ransack_active_record_enhancer/enhanced_where.rb', line 3

def self.included(klass)
  klass.class_eval do
    class << self
      define_method RansackActiveRecordEnhancer.enhanced_where_method_name do |opts = :chain, *rest|
        return super(opts, *rest) unless opts.is_a?(Hash)

        options = opts.collect do |key, value|
          predicate = value.is_a?(Array) ? :in : :eq

          key = "#{key}_#{predicate}" unless RANSACK_PREDICATES.include?(key.to_s.split('_').last)

          { key.to_sym => value }
        end.reduce(:merge)

        ransack(options).result
      end
    end
  end
end