railstutorial10章を勉強中の者です。
該当の箇所
前提・実現したいこと
before_action :correct_user, only: [:edit, :update] これでedit, updateアクションでカレントユーザーとparamsのユーザーが一致しない時強制的にrootパスへリダイレクトしているのですが、このように書けば管理者であれば例外的に編集画面にgetできたりそこからpatchできたりしないでしょうか?
一致しない時このcorrect_userメソッドを
erb
1def correct_user 2 @user = User.find(params[:id]) 3 unless @user.admin? 4 redirect_to(root_url) unless current_user?(@user) 5 end 6end
このコードでは結局rootに戻されてしまいます。
発生している問題・エラーメッセージ
ターミナル
Started GET "/users/2" for ::1 at 2019-05-11 02:03:53 +0900 Processing by UsersController#show as HTML Parameters: {"id"=>"2"} User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] Redirected to http://localhost:3000/ Filter chain halted as :correct_user rendered or redirected Completed 302 Found in 3ms (ActiveRecord: 0.5ms)
どこがおかしいのかわかる方いらっしゃいましたら、ご教授ください。
補足情報(FW/ツールのバージョンなど)
rails 5.1.7 ruby 2.5.3です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。