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

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.



174
175
176
# File 'lib/arel_extensions/nodes/date_diff.rb', line 174

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

Instance Method Details

#convert_number(object) ⇒ Object



178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/arel_extensions/nodes/date_diff.rb', line 178

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} can not be converted to Number")
    end
  end
end