aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/relations/join.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/relations/join.rb')
-rw-r--r--lib/arel/relations/join.rb8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/arel/relations/join.rb b/lib/arel/relations/join.rb
index b3452968e4..b7c5c3f39b 100644
--- a/lib/arel/relations/join.rb
+++ b/lib/arel/relations/join.rb
@@ -27,7 +27,7 @@ module Arel
end
def attributes
- (externalize(relation1).attributes +
+ @attributes ||= (externalize(relation1).attributes +
externalize(relation2).attributes).collect { |a| a.bind(self) }
end
@@ -44,9 +44,11 @@ module Arel
end
def relation_for(attribute)
- [externalize(relation1).relation_for(attribute), externalize(relation2).relation_for(attribute)].max do |r1, r2|
+ [
+ externalize(relation1).relation_for(attribute),
+ externalize(relation2).relation_for(attribute)
+ ].max do |r1, r2|
a1, a2 = r1 && r1[attribute], r2 && r2[attribute]
-
attribute / a1 <=> attribute / a2
end
end