我想围绕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
关于为什么会这样的任何想法?谢谢!
答案 0 :(得分:1)
尝试向此控制器添加编辑操作
def edit
super
end
要在提交表单后执行过滤器,您必须添加
before_filter :check_tutor, only: [:edit, :update]
def update
super
end
答案 1 :(得分:0)
你可能还想考虑一个around_filter http://guides.rubyonrails.org/action_controller_overview.html#after-filters-and-around-filters。我将展示一些示例代码,但我不确定您是否正在尝试在之前构建导师并在之后[根据需要]销毁它,或者这些操作应该在控制器操作的两侧运行。
答案 2 :(得分:0)
如果想要拿起你的控制器,你需要在路线上进行以下改变
devise_for :users, controllers: {registrations: "registrations"}