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