aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/arel/extensions/object.rb4
-rw-r--r--lib/arel/predicates.rb2
-rw-r--r--lib/arel/primitives/attribute.rb6
-rw-r--r--lib/arel/primitives/value.rb4
4 files changed, 14 insertions, 2 deletions
diff --git a/lib/arel/extensions/object.rb b/lib/arel/extensions/object.rb
index 0382ca8027..9b66fcac4e 100644
--- a/lib/arel/extensions/object.rb
+++ b/lib/arel/extensions/object.rb
@@ -3,6 +3,10 @@ class Object
Arel::Value.new(self, relation)
end
+ def circle(relation)
+ bind(relation)
+ end
+
def to_sql(formatter)
formatter.scalar self
end
diff --git a/lib/arel/predicates.rb b/lib/arel/predicates.rb
index 3d01d5872f..48283e5d09 100644
--- a/lib/arel/predicates.rb
+++ b/lib/arel/predicates.rb
@@ -17,7 +17,7 @@ module Arel
end
def bind(relation)
- self.class.new(relation[operand1] || operand1, relation[operand2] || operand2)
+ self.class.new(operand1.circle(relation), operand2.circle(relation))
end
def to_sql(formatter = nil)
diff --git a/lib/arel/primitives/attribute.rb b/lib/arel/primitives/attribute.rb
index cb564c1587..eeea495b09 100644
--- a/lib/arel/primitives/attribute.rb
+++ b/lib/arel/primitives/attribute.rb
@@ -38,12 +38,16 @@ module Arel
end
def original_relation
- original_attribute.relation
+ @original_relation ||= original_attribute.relation
end
def original_attribute
@original_attribute ||= history.detect { |a| !a.join? }
end
+
+ def circle(relation)
+ relation[self]
+ end
module Transformations
def self.included(klass)
diff --git a/lib/arel/primitives/value.rb b/lib/arel/primitives/value.rb
index b4bddd0b0c..7751390be6 100644
--- a/lib/arel/primitives/value.rb
+++ b/lib/arel/primitives/value.rb
@@ -24,5 +24,9 @@ module Arel
def bind(relation)
Value.new(value, relation)
end
+
+ def circle(relation)
+ bind(relation)
+ end
end
end \ No newline at end of file