提交 1ba8ac08 编写于 作者: A Aaron Patterson

differentiating equality and assignment

上级 e0606108
require 'arel/nodes/binary'
require 'arel/nodes/equality'
require 'arel/nodes/assignment'
require 'arel/nodes/or'
require 'arel/nodes/and'
require 'arel/nodes/greater_than'
......
module Arel
module Nodes
class Assignment < Arel::Nodes::Binary
end
end
end
......@@ -26,7 +26,7 @@ def set values
@head.values = [values]
else
@head.values = values.map { |column,value|
Nodes::Equality.new(
Nodes::Assignment.new(
Nodes::UnqualifiedColumn.new(column),
value
)
......
......@@ -149,13 +149,24 @@ def visit_Arel_Nodes_Or o
"#{visit o.left} OR #{visit o.right}"
end
def visit_Arel_Nodes_Equality o
def visit_Arel_Nodes_Assignment o
right = o.right
# FIXME: maybe we should visit NilClass?
right = right.nil? ? 'NULL' : visit(right)
"#{visit o.left} = #{right}"
end
def visit_Arel_Nodes_Equality o
right = o.right
# FIXME: maybe we should visit NilClass?
if right.nil?
"#{visit o.left} IS NULL"
else
"#{visit o.left} = #{visit right}"
end
end
def visit_Arel_Nodes_UnqualifiedColumn o
"#{quote_column_name o.name}"
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册