aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-09-28 16:57:33 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-09-28 16:57:33 -0700
commitf0bf1cf7627562c87b6717b6443a56e3060dfda3 (patch)
tree2768c98181df924e6f6248d96f523a9dc61dc797 /lib/arel
parentf4c12fcc4aa29081f5fe51fc3294ccef55280cc8 (diff)
downloadrails-f0bf1cf7627562c87b6717b6443a56e3060dfda3.tar.gz
rails-f0bf1cf7627562c87b6717b6443a56e3060dfda3.tar.bz2
rails-f0bf1cf7627562c87b6717b6443a56e3060dfda3.zip
refactoring join_sql to return nil if there are no sources
Diffstat (limited to 'lib/arel')
-rw-r--r--lib/arel/select_manager.rb2
-rw-r--r--lib/arel/table.rb21
2 files changed, 12 insertions, 11 deletions
diff --git a/lib/arel/select_manager.rb b/lib/arel/select_manager.rb
index 77930a6bb1..adbf1316d7 100644
--- a/lib/arel/select_manager.rb
+++ b/lib/arel/select_manager.rb
@@ -128,6 +128,8 @@ module Arel
end
def join_sql
+ return nil unless @ctx.froms
+
viz = Visitors::JoinSql.new @engine
Nodes::SqlLiteral.new viz.accept @ctx
end
diff --git a/lib/arel/table.rb b/lib/arel/table.rb
index e71d7d392c..171d165bc2 100644
--- a/lib/arel/table.rb
+++ b/lib/arel/table.rb
@@ -49,40 +49,39 @@ module Arel
end
def join relation, klass = Nodes::InnerJoin
- return select_manager unless relation
+ return from(self) unless relation
- sm = SelectManager.new(@engine)
case relation
when String, Nodes::SqlLiteral
raise if relation.blank?
- sm.from Nodes::StringJoin.new(self, relation)
+ from Nodes::StringJoin.new(self, relation)
else
- sm.from klass.new(self, relation, nil)
+ from klass.new(self, relation, nil)
end
end
def group *columns
- select_manager.group(*columns)
+ from(self).group(*columns)
end
def order *expr
- select_manager.order(*expr)
+ from(self).order(*expr)
end
def where condition
- select_manager.where condition
+ from(self).where condition
end
def project *things
- select_manager.project(*things)
+ from(self).project(*things)
end
def take amount
- select_manager.take amount
+ from(self).take amount
end
def having expr
- select_manager.having expr
+ from(self).having expr
end
def columns
@@ -98,7 +97,7 @@ module Arel
end
def select_manager
- SelectManager.new(@engine, self)
+ SelectManager.new(@engine)
end
private