diff options
author | Nick Kallen <nkallen@nick-kallens-computer-2.local> | 2008-04-27 20:40:20 -0700 |
---|---|---|
committer | Nick Kallen <nkallen@nick-kallens-computer-2.local> | 2008-04-27 20:40:20 -0700 |
commit | 3ae7a601e962468468eac1399ebdfd7113730310 (patch) | |
tree | 548407d22d1799f20366c3a122fb4593002e5063 /lib | |
parent | 4a6822d5e416f2e687d32a14ff98c7b5c815369c (diff) | |
download | rails-3ae7a601e962468468eac1399ebdfd7113730310.tar.gz rails-3ae7a601e962468468eac1399ebdfd7113730310.tar.bz2 rails-3ae7a601e962468468eac1399ebdfd7113730310.zip |
attribute disambiguation
Diffstat (limited to 'lib')
-rw-r--r-- | lib/arel/relations/join.rb | 14 | ||||
-rw-r--r-- | lib/arel/relations/relation.rb | 4 |
2 files changed, 6 insertions, 12 deletions
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 diff --git a/lib/arel/relations/relation.rb b/lib/arel/relations/relation.rb index c8602d22e3..3bd40e8f6b 100644 --- a/lib/arel/relations/relation.rb +++ b/lib/arel/relations/relation.rb @@ -139,7 +139,9 @@ module Arel end def attribute_for_attribute(attribute) - attributes.detect { |a| a =~ attribute } + attributes.select { |a| a =~ attribute }.min do |a1, a2| + (attribute % a1).size <=> (attribute % a2).size + end end end include AttributeAccessors |