From f0bf1cf7627562c87b6717b6443a56e3060dfda3 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 28 Sep 2010 16:57:33 -0700 Subject: refactoring join_sql to return nil if there are no sources --- lib/arel/select_manager.rb | 2 ++ lib/arel/table.rb | 21 ++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) (limited to 'lib/arel') 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 -- cgit v1.2.3