class Babik::Selection::Operation::In

IN operation

Public Class Methods

new(field, value) click to toggle source
Calls superclass method Babik::Selection::Operation::Base::new
# File lib/babik/queryset/lib/selection/operation/operations.rb, line 46
def initialize(field, value)
  _init_value(value)
  super(field, '?field IN ?value', @value)
end

Public Instance Methods

_init_sql_operation() click to toggle source
# File lib/babik/queryset/lib/selection/operation/operations.rb, line 72
def _init_sql_operation
  @sql_operation = @sql_operation_template.sub('?field', @field).sub('?value', @value)
end
_init_value(value) click to toggle source
# File lib/babik/queryset/lib/selection/operation/operations.rb, line 51
def _init_value(value)
  if value.class == Array
    values = value.map do |value_i|
      if value_i.is_a?(String)
        self.class.escape(value_i)
      elsif value_i.is_a?(ActiveRecord::Base)
        value_i.id
      else
        value_i
      end
    end
    @value = "(#{values.join(', ')})"
  elsif value.class == Babik::QuerySet::Base
    @value = "(#{value.sql.select})"
  elsif value.class == String
    @value = "('#{self.class.escape(value)}')"
  else
    @value = "(#{value})"
  end
end