Rails 4:围绕 Devise 编辑配置文件页面的自定义包装方法



我想围绕Devise的编辑配置文件页面编写一个自定义方法。我希望它在加载编辑页面之前和提交之后运行。然而,我的代码似乎不起作用:

class RegistrationsController < Devise::RegistrationsController
  before_filter :check_tutor, only: :edit
  private
    def check_tutor
      if current_user.is_tutor
        current_user.build_tutor if current_user.tutor.nil?
      else
        current_user.tutor.destroy
      end
    end
 end

有什么想法可以解释为什么会这样?谢谢

尝试将编辑操作添加到此控制器

def edit
  super
end

为了在表单提交后执行过滤器,您必须添加

before_filter :check_tutor, only: [:edit, :update]
def update
  super
end

为了让设备接上控制器,您需要在路线中进行以下更改

devise_for :users, controllers: {registrations: "registrations"}

您可能还需要考虑around_filterhttp://guides.rubyonrails.org/action_controller_overview.html#after-过滤器和过滤器周围。我会展示一些示例代码,但我不确定你是否试图在之前构建导师并在之后(根据需要)销毁它,或者这些操作应该在控制器操作的两侧运行。

最新更新