我正在查看Devise代码并注意到大多数控制器都会产生正在创建的资源。
class Devise::RegistrationsController < DeviseController
# ...
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
# ...
这必须是某种可扩展性功能,但我真的不知道如何将块传递给控制器操作?
注意:这个问题是关于你如何在Rails请求周期中实际做的,而不是关于Ruby中的块如何工作。
答案 0 :(得分:19)
允许子类重用devise提供的create
实现,但能够挂钩进程。
例如,您可能有类似
的内容class MyRegistrations < Devise::RegistrationsController
def create
super { |resource| ... }
end
end