Rails 4:围绕Devise编辑个人资料页面的自定义包装器方法

时间:2013-08-01 11:43:38

标签: ruby-on-rails 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

关于为什么会这样的任何想法?谢谢!

3 个答案:

答案 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"}