0

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

これがなぜなのかについてのアイデアはありますか?ありがとう!

4

3 に答える 3

1

このコントローラーに編集アクションを追加してみてください

def edit
  super
end

フォームが送信された後にフィルターを実行するには、追加する必要があります

before_filter :check_tutor, only: [:edit, :update]

def update
  super
end
于 2013-08-01T11:47:58.360 に答える
0

コントローラーをピックアップするためのデバイスについては、ルートの次の変更を行う必要があります

devise_for :users, controllers: {registrations: "registrations"}
于 2013-08-01T12:11:49.150 に答える
0

around_filter http://guides.rubyonrails.org/action_controller_overview.html#after-filters-and-around-filtersを検討することもできます。サンプルコードをいくつか示したいと思いますが、前にチューターを構築し、[必要に応じて]後にそれを破棄しようとしているかどうか、またはこれらのアクションがコントローラーアクションの両側で実行されることになっているかどうかはわかりません。

于 2013-08-01T11:56:34.520 に答える