aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-09-15 14:36:15 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-09-15 14:36:15 -0700
commite460aa96ae9bd5f1a24d798b2d22984a54810c70 (patch)
treefeecb3aa95be57016eb84cc5cdfb904f51df7a63
parent62e36ebba05778b76b97386d5771d3aafd5c4782 (diff)
downloadrails-e460aa96ae9bd5f1a24d798b2d22984a54810c70.tar.gz
rails-e460aa96ae9bd5f1a24d798b2d22984a54810c70.tar.bz2
rails-e460aa96ae9bd5f1a24d798b2d22984a54810c70.zip
Table#[] returns nil when table does not exist
-rw-r--r--lib/arel/table.rb2
-rw-r--r--spec/arel/table_spec.rb7
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/arel/table.rb b/lib/arel/table.rb
index 06bbe7b99e..c381613515 100644
--- a/lib/arel/table.rb
+++ b/lib/arel/table.rb
@@ -88,6 +88,8 @@ module Arel
end
def [] name
+ return nil unless @engine.connection.table_exists?(@name)
+
name = name.to_sym
columns.find { |column| column.name == name }
end
diff --git a/spec/arel/table_spec.rb b/spec/arel/table_spec.rb
index 5b68040aac..9c84b170a2 100644
--- a/spec/arel/table_spec.rb
+++ b/spec/arel/table_spec.rb
@@ -147,6 +147,13 @@ module Arel
end
end
+ describe 'when table does not exist' do
+ it 'returns nil' do
+ table = Table.new(:foooo)
+ table[:id].should be_nil
+ end
+ end
+
### FIXME: this seems like a bad requirement.
#describe 'when given an', Attribute do
# it "returns the attribute if the attribute is within the relation" do