###実現したいこと
forbid_login_userのbefore_actionで指定したアクションのみで適用させたい。
Controller
1class UsersController < ApplicationController 2 before_action :authenticate_user, {only: [:index, :show, :edit, :update]} 3 before_action :forbid_login_user, {only: [:new, :create, :login_form, :login]} 4 before_action :ensure_correct_user, {only: [:edit, :update]}
現在、top.htmlやabout.htmlなど、onlyで指定していないページにも関わらず、session[:user_id]があれば勝手に/posts/indexにログインしてしまいます。
###コード
Routes
1get "/" => "home#top" 2get "about" => "home#about" 3root "home#top" 4get "/login" => "users#login_form" 5post "login" => "users#login" 6post "users/create" => "users#create" 7get "signup" => "users#new"
Controller
1class ApplicationController < ActionController::Base 2 before_action :set_current_user 3 4 def set_current_user 5 @current_user = User.find_by(id: session[:user_id]) 6 end 7 8 def authenticate_user 9 if @current_user == nil 10 flash[:notice] = "ログインが必要です" 11 redirect_to("/login") 12 end 13 end 14 def forbid_login_user 15 if @current_user 16 flash[:notice] = "すでにログインしています" 17 redirect_to("/posts/index") 18 end 19 end 20end
下記のURLでも記載の通り、やはりbefore_actionでonlyと限定すれば、forbid_login_userは起きないはずなのですが...。
https://qiita.com/jonnyjonnyj1397/items/4691d723860a8d927d15
もしかしたら、ApplicationController内でforbid_login_userが着火されてしまって、onlyで限定できていない状態なのかとも考えています。
お分かりの方、ぜひお力添えを宜しくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/21 08:51