diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-11-24 12:01:05 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-11-24 12:01:05 -0800 |
commit | f092ae544f58255508242a5308c456d9b8a13b0c (patch) | |
tree | a41093079fc4333bd5126e4158495452be24ba28 /lib/arel | |
parent | 6667cfb995a49bffe66231a7ffc5a78ca7f5140f (diff) | |
download | rails-f092ae544f58255508242a5308c456d9b8a13b0c.tar.gz rails-f092ae544f58255508242a5308c456d9b8a13b0c.tar.bz2 rails-f092ae544f58255508242a5308c456d9b8a13b0c.zip |
make table aliases cheaper to allocate
Diffstat (limited to 'lib/arel')
-rw-r--r-- | lib/arel/nodes/table_alias.rb | 8 | ||||
-rw-r--r-- | lib/arel/table.rb | 4 |
2 files changed, 4 insertions, 8 deletions
diff --git a/lib/arel/nodes/table_alias.rb b/lib/arel/nodes/table_alias.rb index 7ec1fad272..60da7b19f3 100644 --- a/lib/arel/nodes/table_alias.rb +++ b/lib/arel/nodes/table_alias.rb @@ -1,20 +1,16 @@ module Arel module Nodes class TableAlias - attr_reader :name, :relation, :columns + attr_reader :name, :relation alias :table_alias :name def initialize name, relation @name = name @relation = relation - @columns = relation.columns.map { |column| - column.dup.tap { |col| col.relation = self } - } end def [] name - name = name.to_sym - columns.find { |column| column.name == name } + Attribute.new self, name end end end diff --git a/lib/arel/table.rb b/lib/arel/table.rb index fe12427d1b..6f29a02e56 100644 --- a/lib/arel/table.rb +++ b/lib/arel/table.rb @@ -34,8 +34,8 @@ module Arel end end - def alias - Nodes::TableAlias.new("#{name}_2", self).tap do |node| + def alias name = "#{self.name}_2" + Nodes::TableAlias.new(name, self).tap do |node| @aliases << node end end |