Skip to content

Commit

Permalink
Added automatic incrementing of table alias names
Browse files Browse the repository at this point in the history
  • Loading branch information
ozzyaaron committed Mar 31, 2011
1 parent 2b27e65 commit 3807011
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/arel/table.rb
Expand Up @@ -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
Expand Down
27 changes: 27 additions & 0 deletions test/test_table.rb
Expand Up @@ -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
Expand Down

0 comments on commit 3807011

Please sign in to comment.