deviseコントローラーの中のregistrationsコントローラーのdestroyアクションにだけbefore_actionを追加したい
railsのdeviseというgemを使っています。
ユーザーの削除する時にだけbefore_actionで条件を追加したいと思い、下記を試していますが、うまく指定できず困っています。
発生している問題
:before_action :user_deletable?, only: %i[ destroy ], if: :devise_controller?
とすると、うまくいくかと思いきや、ログアウトする時の処理まで影響が出てしまいます。
コントローラーが、devise/registrations、devise/sessionsとなっているためだと思うのですが、deviseの中のregistrationsコントローラーのみを指定することはできないでしょうか??
ルーティングです。
Controller#Action
devise/registrations#destroy
devise/sessions#destroy
該当のソースコード
applicationcontroller
1class ApplicationController < ActionController::Base 2before_action :user_deletable?, only: %i[ destroy ], if: :devise_controller? 3 4 def user_deletable? 5 何かと条件と処理を記述 6 end 7 8end
試したこと
if: :devise_controller?の部分を、if: :registrations_controller?やif: :devise_registrations_controller?など色々指定したが、エラーがでる。
deviseのregistrationsのみを指定できれば、解決できそうですが、どのように指定すれば良いのかわかりません。
補足情報
deviseのコントローラーは実際にコントローラーディレクトリにはない初期の状態です。少しの変更なので、application_controller.rbでオーバーライドする形で対応したいです。
回答1件
あなたの回答
tips
プレビュー