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
array_of_arrays?(val)
click to toggle source
# File lib/ransack/nodes/value.rb, line 110 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, :timestamptz 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) when :money cast_to_money(value) else cast_to_string(value) end end
cast_to_boolean(val)
click to toggle source
# File lib/ransack/nodes/value.rb, line 68 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 46 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 90 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 86 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 82 def cast_to_integer(val) val.blank? ? nil : val.to_i end
cast_to_money(val)
click to toggle source
# File lib/ransack/nodes/value.rb, line 102 def cast_to_money(val) val.blank? ? nil : val.to_f.to_s end
cast_to_string(val)
click to toggle source
# File lib/ransack/nodes/value.rb, line 78 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 57 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 106 def inspect "Value <#{value}>" end
persisted?()
click to toggle source
# File lib/ransack/nodes/value.rb, line 12 def persisted? false end