diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-09-21 13:50:53 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-09-21 13:50:53 -0700 |
commit | dd425e1258b8480aa8e28e52edea7ef4c9c6f55f (patch) | |
tree | 2762077693ff328512eb65f4d80afdaa95c4f3ef /lib/arel | |
parent | 741b8795779d24057ffb6f98f736f4f9bf00b49b (diff) | |
download | rails-dd425e1258b8480aa8e28e52edea7ef4c9c6f55f.tar.gz rails-dd425e1258b8480aa8e28e52edea7ef4c9c6f55f.tar.bz2 rails-dd425e1258b8480aa8e28e52edea7ef4c9c6f55f.zip |
constructor can take column info
Diffstat (limited to 'lib/arel')
-rw-r--r-- | lib/arel/table.rb | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/arel/table.rb b/lib/arel/table.rb index d23245691b..a1243f582b 100644 --- a/lib/arel/table.rb +++ b/lib/arel/table.rb @@ -10,16 +10,20 @@ module Arel def initialize name, engine = Table.engine @name = name @engine = engine - @engine = engine[:engine] if Hash === engine @columns = nil @aliases = [] @table_alias = nil @primary_key = nil - # Sometime AR sends an :as parameter to table, to let the table know that - # it is an Alias. We may want to override new, and return a TableAlias - # node? - @table_alias = engine[:as] if Hash === engine + if Hash === engine + @engine = engine[:engine] || Table.engine + @columns = attributes_for engine[:columns] + + # Sometime AR sends an :as parameter to table, to let the table know + # that it is an Alias. We may want to override new, and return a + # TableAlias node? + @table_alias = engine[:as] + end end def primary_key @@ -82,9 +86,8 @@ module Arel end def columns - @columns ||= @engine.connection.columns(@name, "#{@name} Columns").map do |column| - Attributes.for(column).new self, column.name.to_sym, column - end + @columns ||= + attributes_for @engine.connection.columns(@name, "#{@name} Columns") end def [] name @@ -95,6 +98,14 @@ module Arel end private + def attributes_for columns + return nil unless columns + + columns.map do |column| + Attributes.for(column).new self, column.name.to_sym, column + end + end + def table_exists? @table_exists ||= tables.key?(@name) || engine.connection.table_exists?(name) end |