aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors/to_sql.rb
diff options
context:
space:
mode:
authorFelix Bùˆnemann <buenemann@louis.info>2015-12-19 19:40:46 +0100
committerFelix Bùˆnemann <buenemann@louis.info>2016-01-05 17:53:52 +0100
commit4c7e50f9328aca4e294b41fce0832bf6ac4a939a (patch)
tree1bf97bcb2f6928a32b6acb93ea9886925a0e21b4 /lib/arel/visitors/to_sql.rb
parent347c7786f8e7ea0e9643ff707ce1ace8b3969d6c (diff)
downloadrails-4c7e50f9328aca4e294b41fce0832bf6ac4a939a.tar.gz
rails-4c7e50f9328aca4e294b41fce0832bf6ac4a939a.tar.bz2
rails-4c7e50f9328aca4e294b41fce0832bf6ac4a939a.zip
Implement CASE Conditional Expression
Diffstat (limited to 'lib/arel/visitors/to_sql.rb')
-rw-r--r--lib/arel/visitors/to_sql.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb
index ce1fdf80ce..598bf2d984 100644
--- a/lib/arel/visitors/to_sql.rb
+++ b/lib/arel/visitors/to_sql.rb
@@ -708,6 +708,35 @@ module Arel
visit o.right, collector
end
+ def visit_Arel_Nodes_Case o, collector
+ collector << "CASE "
+ if o.case
+ visit o.case, collector
+ collector << " "
+ end
+ o.conditions.each do |condition|
+ visit condition, collector
+ collector << " "
+ end
+ if o.default
+ visit o.default, collector
+ collector << " "
+ end
+ collector << "END"
+ end
+
+ def visit_Arel_Nodes_When o, collector
+ collector << "WHEN "
+ visit o.left, collector
+ collector << " THEN "
+ visit o.right, collector
+ end
+
+ def visit_Arel_Nodes_Else o, collector
+ collector << "ELSE "
+ visit o.expr, collector
+ end
+
def visit_Arel_Nodes_UnqualifiedColumn o, collector
collector << "#{quote_column_name o.name}"
collector