diff options
Diffstat (limited to 'lib/active_relation')
-rw-r--r-- | lib/active_relation/primitives/attribute.rb | 30 | ||||
-rw-r--r-- | lib/active_relation/primitives/expression.rb | 1 |
2 files changed, 19 insertions, 12 deletions
diff --git a/lib/active_relation/primitives/attribute.rb b/lib/active_relation/primitives/attribute.rb index 4a10dffbe5..e55dd0bdc4 100644 --- a/lib/active_relation/primitives/attribute.rb +++ b/lib/active_relation/primitives/attribute.rb @@ -40,11 +40,27 @@ module ActiveRelation @alias == other.alias and ancestor == other.ancestor end - alias_method :eql?, :== - def =~(other) - !(history & other.send(:history)).empty? + module Congruence + def self.included(klass) + klass.class_eval do + alias_method :eql?, :== + end + end + + def hash + relation.hash + name.hash + end + + def history + [self] + (ancestor ? [ancestor, ancestor.send(:history)].flatten : []) + end + + def =~(other) + !(history & other.send(:history)).empty? + end end + include Congruence module Predications def equals(other) @@ -100,17 +116,9 @@ module ActiveRelation strategy.attribute prefix, name, self.alias end - def hash - relation.hash + name.hash - end - private def prefix relation.prefix_for(self) end - - def history - [self] + (ancestor ? [ancestor, ancestor.send(:history)].flatten : []) - end end end
\ No newline at end of file diff --git a/lib/active_relation/primitives/expression.rb b/lib/active_relation/primitives/expression.rb index 4d28ef108c..35c1b5ff65 100644 --- a/lib/active_relation/primitives/expression.rb +++ b/lib/active_relation/primitives/expression.rb @@ -36,6 +36,5 @@ module ActiveRelation ancestor == other.ancestor and @alias == other.alias end - alias_method :eql?, :== end end
\ No newline at end of file |