我想围绕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-过滤器和过滤器周围。我会展示一些示例代码,但我不确定你是否试图在之前构建导师并在之后(根据需要)销毁它,或者这些操作应该在控制器操作的两侧运行。