From 38070119340c81d3a2937a43de9f783e60eadf60 Mon Sep 17 00:00:00 2001 From: ozzyaaron Date: Thu, 31 Mar 2011 13:26:25 +0800 Subject: [PATCH] Added automatic incrementing of table alias names --- lib/arel/table.rb | 2 +- test/test_table.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/arel/table.rb b/lib/arel/table.rb index 2aff71b2..53dcfd08 100644 --- a/lib/arel/table.rb +++ b/lib/arel/table.rb @@ -42,7 +42,7 @@ def primary_key end end - def alias name = "#{self.name}_2" + def alias name = "#{self.name}_#{@aliases.length + 2}" Nodes::TableAlias.new(name, self).tap do |node| @aliases << node end diff --git a/test/test_table.rb b/test/test_table.rb index 10355405..61b84d6b 100644 --- a/test/test_table.rb +++ b/test/test_table.rb @@ -101,6 +101,33 @@ module Arel node.name.must_equal 'users_2' node[:id].relation.must_equal node end + + describe 'when given a alias name' do + it 'will give the alias the provided name' do + @relation.aliases.must_equal [] + + node = @relation.alias("test_alias") + @relation.aliases.must_equal [node] + node.name.must_equal 'test_alias' + node[:id].relation.must_equal node + end + end + + describe 'when not given an alias name' do + it 'should increment alias names' do + @relation.aliases.must_equal [] + + node = @relation.alias + @relation.aliases.must_equal [node] + node.name.must_equal 'users_2' + node[:id].relation.must_equal node + + node_2 = @relation.alias + @relation.aliases.must_equal [node, node_2] + node_2.name.must_equal 'users_3' + node_2[:id].relation.must_equal node_2 + end + end end describe 'new' do