aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors/visitor.rb
diff options
context:
space:
mode:
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