class ActiveAny::Relation::WhereClause::Condition

Attributes

key[R]
value[R]

Public Class Methods

new(key, value) click to toggle source
# File lib/active_any/relation/where_clause.rb, line 9
def initialize(key, value)
  @key = key
  @value = value

  register_handler(BasicObject, :base_handler)
  register_handler(Regexp, :regexp_handler)
  register_handler(Range, :range_handler)
  register_handler(Array, :array_handler)
end

Public Instance Methods

evaluate(adapter, record = nil) click to toggle source
# File lib/active_any/relation/where_clause.rb, line 19
def evaluate(adapter, record = nil)
  adapter.public_send(handle_for(value), record, key, value)
end
to_h() click to toggle source
# File lib/active_any/relation/where_clause.rb, line 23
def to_h
  { key => value }
end

Private Instance Methods

handle_for(value) click to toggle source
# File lib/active_any/relation/where_clause.rb, line 29
def handle_for(value)
  handlers.select { |klass, _| value.is_a?(klass) }.last.last
end
handlers() click to toggle source
# File lib/active_any/relation/where_clause.rb, line 33
def handlers
  @handlers ||= []
end
register_handler(klass, method) click to toggle source
# File lib/active_any/relation/where_clause.rb, line 37
def register_handler(klass, method)
  handlers << [klass, method]
end