aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors/visitor.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-11-30 11:06:09 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2010-11-30 11:06:09 -0800
commitf62a7267c551d216297bec9f0496738b8e27dcae (patch)
treedbd7ea511e1ee6519c065e01701cc6bacc88b132 /lib/arel/visitors/visitor.rb
parente02a914fb0b8b7baac1b231badeba49e991a03b9 (diff)
downloadrails-f62a7267c551d216297bec9f0496738b8e27dcae.tar.gz
rails-f62a7267c551d216297bec9f0496738b8e27dcae.tar.bz2
rails-f62a7267c551d216297bec9f0496738b8e27dcae.zip
adding deprecated support for walking ancestor trees
Diffstat (limited to 'lib/arel/visitors/visitor.rb')
-rw-r--r--lib/arel/visitors/visitor.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/arel/visitors/visitor.rb b/lib/arel/visitors/visitor.rb
index 510d50399b..b0d16ffe4e 100644
--- a/lib/arel/visitors/visitor.rb
+++ b/lib/arel/visitors/visitor.rb
@@ -13,6 +13,13 @@ module Arel
def visit object
send DISPATCH[object.class], object
+ rescue NoMethodError
+ warn "visiting #{object.class} via superclass, this will be removed in arel 2.2.0" if $VERBOSE
+ superklass = object.class.ancestors.find { |klass|
+ respond_to?(DISPATCH[klass], true)
+ }
+ DISPATCH[object.class] = DISPATCH[superklass]
+ retry
end
end
end