aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/arel/visitors/visitor.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/arel/visitors/visitor.rb')
-rw-r--r--activerecord/lib/arel/visitors/visitor.rb12
1 files changed, 8 insertions, 4 deletions
diff --git a/activerecord/lib/arel/visitors/visitor.rb b/activerecord/lib/arel/visitors/visitor.rb
index 2d5a2b6681..d65ac820bc 100644
--- a/activerecord/lib/arel/visitors/visitor.rb
+++ b/activerecord/lib/arel/visitors/visitor.rb
@@ -7,8 +7,8 @@ module Arel # :nodoc: all
@dispatch = get_dispatch_cache
end
- def accept(object, *args)
- visit object, *args
+ def accept(object, collector = nil)
+ visit object, collector
end
private
@@ -24,9 +24,13 @@ module Arel # :nodoc: all
self.class.dispatch_cache
end
- def visit(object, *args)
+ def visit(object, collector = nil)
dispatch_method = dispatch[object.class]
- send dispatch_method, object, *args
+ if collector
+ send dispatch_method, object, collector
+ else
+ send dispatch_method, object
+ end
rescue NoMethodError => e
raise e if respond_to?(dispatch_method, true)
superklass = object.class.ancestors.find { |klass|