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 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