こんにちは。
最近のマイブームは、朝にバナナ。
どうもハチマキです。
はじめに
deviseを使って、ユーザログイン、登録機能を実装した時のお話です。
投稿フォームの表示を「ユーザがadminユーザの場合にのみ」表示させたいという状況がありました。
その際に「curennt_user.adimin?」を定義したらエラーが発生し、なかなか解決できなかったので、今回はこの解決方法について書いていきたいと思います。
では早速行きましょう!
本日の概要 : curennt_user.adimin?を使ったらエラーが発生した時の解決方法
エラー例
下記のように条件分岐を使い、「if current_user.admin?」を定義したら「undefined method `admin?' for nil:NilClass」のエラーが発生
原因
この原因は、adminがnilということが根本原因ではなく、current_userがnilであることが原因で発生しています。
よって、admin?でadminの真偽値を判定できずエラーが発生しています。
解決方法
current_userであることを別途定義すれば解決できます。
今回は、ユーザが「ログインしている」かつ、ユーザが「admin」の場合のように投稿フォームを表示させたかったので、下記のようにコードを書き換え解決に至りました。
- if user_signed_in? && current_user.admin?
これで完了です!
参考資料
Ruby - current_user.admin?について|teratail
Railsで管理者権限(admin)を設定するカンタンな方法は? | にょけんのボックス
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
日々勉強です。
以上、ハチマキでした。