ruby on rails - Parameter passing and assert_difference -


i new both ruby , rails. don't understand why following code (which uses rails' [activesupport::testing.assert_difference]1 method) doesn't require comma after parameter 1. code comes chapter 7 of rails tutorial.

assert_difference 'user.count', 1   post_via_redirect users_path, ... end 

the signature assert_difference is:

assert_difference(expression, difference = 1, message = nil, &block) 

thus expect comma required between difference parameter , block parameter not case.

why comma not required?

blocks aren't parameters - shows in method signature method captures block passed in proc, implementation detail leaked outside world. example if define method this

def foo(*args) end 

then blocks passed method don't end in args.

however if passing proc (or responds to_proc), using & argument prefix wish argument used method's block need comma.

my_proc = -> {post_via_redirect users_path} assert_difference user.count, 1, &my_proc 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -