class Ransack::Nodes::Value

Attributes

value[RW]

Public Class Methods

new(context, value = nil) click to toggle source
Calls superclass method Ransack::Nodes::Node.new
# File lib/ransack/nodes/value.rb, line 7
def initialize(context, value = nil)
  super(context)
  @value = value
end

Public Instance Methods

==(other)
Alias for: eql?
array_of_arrays?(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 104
def array_of_arrays?(val)
  Array === val && Array === val.first
end
cast(type) click to toggle source
# File lib/ransack/nodes/value.rb, line 25
def cast(type)
   case type
   when :date
     cast_to_date(value)
   when :datetime, :timestamp, :time
     cast_to_time(value)
   when :boolean
     cast_to_boolean(value)
   when :integer
     cast_to_integer(value)
   when :float
     cast_to_float(value)
   when :decimal
     cast_to_decimal(value)
   else
     cast_to_string(value)
   end
 end
cast_to_boolean(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 66
def cast_to_boolean(val)
  if Constants::TRUE_VALUES.include?(val)
    true
  elsif Constants::FALSE_VALUES.include?(val)
    false
  else
    nil
  end
end
cast_to_date(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 44
def cast_to_date(val)
  if val.respond_to?(:to_date)
    val.to_date rescue nil
  else
    y, m, d = *[val].flatten
    m ||= 1
    d ||= 1
    Date.new(y,m,d) rescue nil
  end
end
cast_to_decimal(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 88
def cast_to_decimal(val)
  if val.blank?
    nil
  elsif val.class == BigDecimal
    val
  elsif val.respond_to?(:to_d)
    val.to_d
  else
    val.to_s.to_d
  end
end
cast_to_float(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 84
def cast_to_float(val)
  val.blank? ? nil : val.to_f
end
cast_to_integer(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 80
def cast_to_integer(val)
  val.blank? ? nil : val.to_i
end
cast_to_string(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 76
def cast_to_string(val)
  val.respond_to?(:to_s) ? val.to_s : String.new(val)
end
cast_to_time(val) click to toggle source
# File lib/ransack/nodes/value.rb, line 55
def cast_to_time(val)
  if val.is_a?(Array)
    Time.zone.local(*val) rescue nil
  else
    unless val.acts_like?(:time)
      val = val.is_a?(String) ? Time.zone.parse(val) : val.to_time rescue val
    end
    val.in_time_zone rescue nil
  end
end
eql?(other) click to toggle source
# File lib/ransack/nodes/value.rb, line 16
def eql?(other)
  self.class == other.class && self.value == other.value
end
Also aliased as: ==
hash() click to toggle source
# File lib/ransack/nodes/value.rb, line 21
def hash
  value.hash
end
inspect() click to toggle source
# File lib/ransack/nodes/value.rb, line 100
def inspect
  "Value <#{value}>"
end
persisted?() click to toggle source
# File lib/ransack/nodes/value.rb, line 12
def persisted?
  false
end