Devise控制器中“产生资源”的作用是什么?

时间:2016-09-10 11:59:23

标签: ruby-on-rails devise

我正在查看Devise代码并注意到大多数控制器都会产生正在创建的资源。

class Devise::RegistrationsController < DeviseController
  # ...
  def create
    build_resource(sign_up_params)

    resource.save
    yield resource if block_given?
    # ...

这必须是某种可扩展性功能,但我真的不知道如何将块传递给控制器​​操作?

注意:这个问题是关于你如何在Rails请求周期中实际做的,而不是关于Ruby中的块如何工作。

1 个答案:

答案 0 :(得分:19)

允许子类重用devise提供的create实现,但能够挂钩进程。

例如,您可能有类似

的内容
class MyRegistrations < Devise::RegistrationsController
  def create
     super { |resource| ... }
  end
end