lib/kasket/visitor.rb in kasket-4.2.1 vs lib/kasket/visitor.rb in kasket-4.3.0
- old
+ new
@@ -43,11 +43,11 @@
query
end
def visit_Arel_Nodes_SelectCore(node, *_)
return :unsupported if node.groups.any?
- return :unsupported if node.having
+ return :unsupported if (ActiveRecord::VERSION::MAJOR < 5 ? node.having : node.havings.present?)
return :unsupported if node.set_quantifier
return :unsupported if (!node.source || node.source.empty?)
return :unsupported if node.projections.size != 1
select = node.projections[0]
@@ -60,11 +60,15 @@
parts.include?(:unsupported) ? :unsupported : parts
end
def visit_Arel_Nodes_Limit(node, *_)
- {:limit => node.value.to_i}
+ if ActiveRecord::VERSION::MAJOR < 5
+ {:limit => node.value.to_i}
+ else
+ {:limit => visit(node.value).to_i}
+ end
end
def visit_Arel_Nodes_JoinSource(node, *_)
return :unsupported if !node.left || node.right.any?
return :unsupported if !node.left.is_a?(Arel::Table)
@@ -107,23 +111,26 @@
node.to_s
end
end
def visit_Arel_Nodes_BindParam(x, *_)
- visit(@binds.shift[1])
+ if ActiveRecord::VERSION::MAJOR < 5
+ visit(@binds.shift[1])
+ else
+ visit(@binds.shift)
+ end
end
def visit_Array(node, *_)
node.map {|value| visit(value) }
end
def visit_Arel_Nodes_Casted(node, *_)
quoted(node.val)
end
- #TODO: We are actually not using this?
def quoted(node)
- @model_class.connection.quote(node, self.last_column)
+ @model_class.connection.quote(node)
end
alias :visit_String :literal
alias :visit_Fixnum :literal
alias :visit_TrueClass :literal