aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Deisz <kevin.deisz@gmail.com>2019-01-21 10:28:39 -0500
committerKevin Deisz <kevin.deisz@gmail.com>2019-01-21 10:28:39 -0500
commit65cec345b487a784c9dae4155f74e70befc0bddb (patch)
tree9e1e3f5dda93fa5e91b180df61d1dbbb221f8fd5
parentfeb97dfabd027a73a41ca8bd2ab7c3196ab76d3d (diff)
downloadrails-65cec345b487a784c9dae4155f74e70befc0bddb.tar.gz
rails-65cec345b487a784c9dae4155f74e70befc0bddb.tar.bz2
rails-65cec345b487a784c9dae4155f74e70befc0bddb.zip
Alias case nodes
When `Arel` was merged into `ActiveRecord` we lost the ability to alias case nodes. This adds it back.
-rw-r--r--activerecord/lib/arel/nodes/case.rb2
-rw-r--r--activerecord/test/cases/arel/nodes/case_test.rb10
2 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/lib/arel/nodes/case.rb b/activerecord/lib/arel/nodes/case.rb
index 654a54825e..b8f83128c8 100644
--- a/activerecord/lib/arel/nodes/case.rb
+++ b/activerecord/lib/arel/nodes/case.rb
@@ -3,6 +3,8 @@
module Arel # :nodoc: all
module Nodes
class Case < Arel::Nodes::Node
+ include Arel::AliasPredication
+
attr_accessor :case, :conditions, :default
def initialize(expression = nil, default = nil)
diff --git a/activerecord/test/cases/arel/nodes/case_test.rb b/activerecord/test/cases/arel/nodes/case_test.rb
index 89861488df..946c2b0453 100644
--- a/activerecord/test/cases/arel/nodes/case_test.rb
+++ b/activerecord/test/cases/arel/nodes/case_test.rb
@@ -80,6 +80,16 @@ module Arel
assert_equal 2, array.uniq.size
end
end
+
+ describe "#as" do
+ it "allows aliasing" do
+ node = Case.new "foo"
+ as = node.as("bar")
+
+ assert_equal node, as.left
+ assert_kind_of Arel::Nodes::SqlLiteral, as.right
+ end
+ end
end
end
end