aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-09-12 16:53:12 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-09-12 16:53:12 -0700
commitdcb46b00163f454fa275dfc66690180dcb8f7047 (patch)
tree01bd544dc9315221ef6dde2b10f61dc510958d5a
parentf6d6d0329705101d80ca980633bb56e5742fd95a (diff)
downloadrails-dcb46b00163f454fa275dfc66690180dcb8f7047.tar.gz
rails-dcb46b00163f454fa275dfc66690180dcb8f7047.tar.bz2
rails-dcb46b00163f454fa275dfc66690180dcb8f7047.zip
adding some backwards compatibility
-rw-r--r--lib/arel/select_manager.rb4
-rw-r--r--spec/arel/select_manager_spec.rb12
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb
index c62101077a..0f70a461a3 100644
--- a/lib/arel/select_manager.rb
+++ b/lib/arel/select_manager.rb
@@ -50,6 +50,10 @@ module Arel
end
def from table
+ if String === table
+ return self if @ctx.froms.any? { |x| x.name.to_s == table }
+ end
+
@ctx.froms << table
self
end
diff --git a/spec/arel/select_manager_spec.rb b/spec/arel/select_manager_spec.rb
index ba4a51eb56..86a4daee44 100644
--- a/spec/arel/select_manager_spec.rb
+++ b/spec/arel/select_manager_spec.rb
@@ -27,6 +27,18 @@ module Arel
describe 'select manager' do
describe 'backwards compatibility' do
+ describe 'from' do
+ it 'ignores strings when table of same name exists' do
+ table = Table.new :users
+ manager = Arel::SelectManager.new Table.engine
+
+ manager.from table
+ manager.from 'users'
+ manager.project table['id']
+ manager.to_sql.should be_like 'SELECT "users"."id" FROM "users"'
+ end
+ end
+
describe '#having' do
it 'converts strings to SQLLiterals' do
table = Table.new :users