Class: ArelExtensions::Nodes::DateSub

Inherits:
Function
  • Object
show all
Defined in:
lib/arel_extensions/nodes/date_diff.rb

Overview

difference entre colonne date et date string/date

Constant Summary collapse

RETURN_TYPE =
:integer

Constants inherited from Function

Function::MBSTRING

Instance Method Summary collapse

Methods inherited from Function

#!=, #==, #as, #convert_to_date_node, #convert_to_datetime_node, #convert_to_node, #convert_to_number, #convert_to_string_node, #expr, #left, #return_type, #right, #type_of_attribute

Methods included from Predications

#cast, #convert_to_node, #imatches, #in, #matches, #not_in, #when

Constructor Details

#initialize(expr) ⇒ DateSub

Returns a new instance of DateSub.



192
193
194
# File 'lib/arel_extensions/nodes/date_diff.rb', line 192

def initialize(expr)
  super [expr.first, convert_number(expr[1])]
end

Instance Method Details

#convert_number(object) ⇒ Object



196
197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/arel_extensions/nodes/date_diff.rb', line 196

def convert_number(object)
  case object
  when Arel::Attributes::Attribute, Arel::Nodes::Node, Integer
    object
  when String
    object.to_i
  else
    if defined?(ActiveSupport::Duration) && ActiveSupport::Duration === object
      object.to_i
    else
      raise(ArgumentError, "#{object.class} cannot be converted to Number")
    end
  end
end