□解決したいこと
deviceを用いてログインしていないユーザーもしくは権限のないユーザーがユーザー編集ページアクセスした際に、トップページにリダイレクトされる機能を実装しております。編集機能は実装済ですが、リダイレクト機能がうまく起動しません。
まずは、ログインしていないユーザーをログインページにリダイレクトする記述をしたいのですが、deviseの場合どのように記述すればいいかがわかりません。
環境
rails (6.0.3.7)
devise (4.8.0)
ご意見・アドバイスいただきたくお願い申し上げます。
ruby
1users/registrations_controller.rb 2 3class Users::RegistrationsController < Devise::RegistrationsController 4 before_action :authenticate_user! 5 before_action :configure_account_update_params, only: [:update] 6 7 protected 8 9 def update_resource(resource, params) 10 resource.update_without_password(params) 11 end 12 13 def after_update_path_for(_resource) 14 root_path 15 end 16 17 def configure_account_update_params 18 devise_parameter_sanitizer.permit(:account_update, keys: [:nickname, :last_name, :first_name, :introduction]) 19 end 20end
ruby
1application_controller.rb 2 3class ApplicationController < ActionController::Base 4 before_action :authenticate_user!, only: [:new,:edit] 5 before_action :configure_permitted_parameters, if: :devise_controller? 6 7 private 8 9 def configure_permitted_parameters 10 devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :last_name, :first_name, :introduction]) 11 end 12end
ruby
1routes.rb 2 3Rails.application.routes.draw do 4 devise_for :users, controllers: { 5 registrations: 'users/registrations' 6 } 7 resources :blogs 8 9 root to: 'tips#index' 10 resources :users, only: [:show,:destroy] 11 resources :tips do 12 collection do 13 get 'search' 14 get 'tagsearch' 15 get 'detail_search' 16 get 'trend' 17 end 18 resources :comments, only: :create 19 resources :likes, only: [:create, :destroy] 20 end 21end
□仮説及び調べたこと
authenticate_user!を用いて、ログインしていなければログイン画面に移動するということを意図して、registration_controllerとapplication_controllerに記述しましたが、リダイレクトは実行されませんでした。
ユーザー編集機能につきましては以下を参考にさせていただきました。
deviseについて理解が甘いので、根本的に間違っているかもしれませんが、ご意見いただけるとありがたいです。
###追記
挙動は以下のようになります。
ログインしていない状態でURLからユーザー編集ページにアクセスすると、
最初はよく分からないページが表示されます。
再度入り直すと、編集ページに入れてしまいます。
ルーティングの表示
rails routes Prefix Verb URI Pattern Controller#Action new_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format) devise/passwords#edit user_password PATCH /users/password(.:format) devise/passwords#update PUT /users/password(.:format) devise/passwords#update POST /users/password(.:format) devise/passwords#create cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel new_user_registration GET /users/sign_up(.:format) users/registrations#new edit_user_registration GET /users/edit(.:format) users/registrations#edit user_registration PATCH /users(.:format) users/registrations#update PUT /users(.:format) users/registrations#update DELETE /users(.:format) users/registrations#destroy POST /users(.:format) users/registrations#create blogs GET /blogs(.:format) blogs#index POST /blogs(.:format) blogs#create new_blog GET /blogs/new(.:format) blogs#new edit_blog GET /blogs/:id/edit(.:format) blogs#edit blog GET /blogs/:id(.:format) blogs#show PATCH /blogs/:id(.:format) blogs#update PUT /blogs/:id(.:format) blogs#update DELETE /blogs/:id(.:format) blogs#destroy root GET / tips#index user GET /users/:id(.:format) users#show DELETE /users/:id(.:format) users#destroy search_tips GET /tips/search(.:format) tips#search tagsearch_tips GET /tips/tagsearch(.:format) tips#tagsearch detail_search_tips GET /tips/detail_search(.:format) tips#detail_search trend_tips GET /tips/trend(.:format) tips#trend tip_comments POST /tips/:tip_id/comments(.:format) comments#create tip_likes POST /tips/:tip_id/likes(.:format) likes#create tip_like DELETE /tips/:tip_id/likes/:id(.:format) likes#destroy tips GET /tips(.:format) tips#index POST /tips(.:format) tips#create new_tip GET /tips/new(.:format) tips#new edit_tip GET /tips/:id/edit(.:format) tips#edit tip GET /tips/:id(.:format) tips#show PATCH /tips/:id(.:format) tips#update PUT /tips/:id(.:format) tips#update DELETE /tips/:id(.:format) tips#destroy
回答1件
あなたの回答
tips
プレビュー