From 3ae7a601e962468468eac1399ebdfd7113730310 Mon Sep 17 00:00:00 2001 From: Nick Kallen Date: Sun, 27 Apr 2008 20:40:20 -0700 Subject: attribute disambiguation --- lib/arel/relations/join.rb | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'lib/arel/relations/join.rb') diff --git a/lib/arel/relations/join.rb b/lib/arel/relations/join.rb index d5ec9d43bd..e5ca49c284 100644 --- a/lib/arel/relations/join.rb +++ b/lib/arel/relations/join.rb @@ -24,17 +24,9 @@ module Arel end def prefix_for(attribute) - if relation1[attribute] && !relation2[attribute] - externalize(relation1).prefix_for(attribute) - elsif relation2[attribute] && !relation1[attribute] - externalize(relation2).prefix_for(attribute) - else - if (attribute % relation1[attribute]).size < (attribute % relation2[attribute]).size - externalize(relation1).prefix_for(attribute) - else - externalize(relation2).prefix_for(attribute) - end - end + externalize([relation1[attribute], relation2[attribute]].select { |a| a =~ attribute }.min do |a1, a2| + (attribute % a1).size <=> (attribute % a2).size + end.relation).prefix_for(attribute) end # TESTME: Not sure which scenario needs this method, was driven by failing tests in ActiveRecord -- cgit v1.2.3