Methods
- E
- I
- N
- T
Attributes
[R] | subtype |
Class Public methods
new(subtype)
Link
Instance Public methods
extract_bounds(value)
Link
# File activerecord/lib/active_record/connection_adapters/postgresql/oid.rb, line 109 def extract_bounds(value) from, to = value[1..-2].split(',') { from: (value[1] == ',' || from == '-infinity') ? infinity(:negative => true) : from, to: (value[-2] == ',' || to == 'infinity') ? infinity : to, exclude_start: (value[0] == '('), exclude_end: (value[-1] == ')') } end
infinity(options = {})
Link
infinity?(value)
Link
to_integer(value)
Link
type_cast(value)
Link
# File activerecord/lib/active_record/connection_adapters/postgresql/oid.rb, line 131 def type_cast(value) return if value.nil? || value == 'empty' return value if value.is_a?(::Range) extracted = extract_bounds(value) case @subtype when :date from = ConnectionAdapters::Column.value_to_date(extracted[:from]) from -= 1.day if extracted[:exclude_start] to = ConnectionAdapters::Column.value_to_date(extracted[:to]) when :decimal from = BigDecimal.new(extracted[:from].to_s) # FIXME: add exclude start for ::Range, same for timestamp ranges to = BigDecimal.new(extracted[:to].to_s) when :time from = ConnectionAdapters::Column.string_to_time(extracted[:from]) to = ConnectionAdapters::Column.string_to_time(extracted[:to]) when :integer from = to_integer(extracted[:from]) rescue value ? 1 : 0 from -= 1 if extracted[:exclude_start] to = to_integer(extracted[:to]) rescue value ? 1 : 0 else return value end ::Range.new(from, to, extracted[:exclude_end]) end