Class: ArelExtensions::Nodes::DateDiff

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 =

by default…

:integer

Instance Attribute Summary collapse

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) ⇒ DateDiff

Returns a new instance of DateDiff.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/arel_extensions/nodes/date_diff.rb', line 11

def initialize(expr)
  res = []
  col = expr.first
  case col
  when Arel::Nodes::Node, Arel::Attributes::Attribute
    @left_node_type = type_of_attribute(col)
  when Date
    @left_node_type = :ruby_date
  when DateTime, Time
    @left_node_type = :ruby_time
  end
  res << ([:date, :ruby_date].include?(@left_node_type) ? convert_to_date_node(col) : convert_to_datetime_node(col))
  case expr[1]
  when Arel::Nodes::Node, Arel::Attributes::Attribute
    @right_node_type = type_of_attribute(expr[1])
  when Date
    @right_node_type = :ruby_date
  when DateTime, Time
    @right_node_type = :ruby_time
  end
  res << ([:date, :ruby_date].include?(@left_node_type) ? convert_to_date_node(expr[1]) : convert_to_datetime_node(expr[1]))
  super res
end

Instance Attribute Details

#left_node_typeObject

Returns the value of attribute left_node_type.



6
7
8
# File 'lib/arel_extensions/nodes/date_diff.rb', line 6

def left_node_type
  @left_node_type
end

#right_node_typeObject

Returns the value of attribute right_node_type.



7
8
9
# File 'lib/arel_extensions/nodes/date_diff.rb', line 7

def right_node_type
  @right_node_type
end