我已经在Ruby on Rails中启动了一个项目,并使用设计进行用户注册。我很难理解为什么以下不起作用:
# After create hook to send passwrd reset instructions
after_create(&:send_reset_password_instructions)
我想知道这是否是使用设计方法重置密码信息的具体实现问题,或者我做错了什么。可能是后者。
答案 0 :(得分:3)
您不应该将您的方法作为块proc传递,而应该作为常规参数传递:
after_create :send_reset_password_instructions
答案 1 :(得分:1)
作为马雷克回答的补充信息:
当您对{ |user| user.send_reset_password_instructions }
方法after_create
阻止时,它会成为Proc
的{{1}}对象,其中#arity == 1
变为&:send_reset_password_instructions
。实际上,arity == -1
用于确定如何调用钩子。请参阅:https://github.com/rails/rails/blob/4a68792df7f2cecf9e6d9ddb18dfe761f553eb2a/activesupport/lib/active_support/callbacks.rb#L447
因此,通常,在为回调定义挂钩时,不应使用#arity
格式。