aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/arel/visitors/bind_visitor.rb5
-rw-r--r--test/visitors/test_bind_visitor.rb6
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/arel/visitors/bind_visitor.rb b/lib/arel/visitors/bind_visitor.rb
index c316c8d702..c336e87395 100644
--- a/lib/arel/visitors/bind_visitor.rb
+++ b/lib/arel/visitors/bind_visitor.rb
@@ -25,7 +25,10 @@ module Arel
def visit_Arel_Nodes_BindParam o, collector
if @block
- @block.call(collector)
+ val = @block.call
+ if String === val
+ collector << val
+ end
else
super
end
diff --git a/test/visitors/test_bind_visitor.rb b/test/visitors/test_bind_visitor.rb
index a04a04f4cb..5171bbe57c 100644
--- a/test/visitors/test_bind_visitor.rb
+++ b/test/visitors/test_bind_visitor.rb
@@ -25,8 +25,8 @@ module Arel
}.new Table.engine.connection
assignment = um.ast.values[0]
- actual = visitor.accept(assignment, collector) { |collector|
- collector << "replace"
+ actual = visitor.accept(assignment, collector) {
+ "replace"
}
assert actual
value = actual.value
@@ -43,7 +43,7 @@ module Arel
bp = Nodes::BindParam.new 'omg'
called = false
- visitor.accept(bp, collector) { |collector| called = true }
+ visitor.accept(bp, collector) { called = true }
assert called
end