Deviseで undefined method `authenticate_user!'で怒られた時
管理画面のユーザー管理と認証に、deviseを使っていた時に、
ログイン時のみアクセスできるように、Controllerに 下記のbefore_actionを設定していたんですが、
before_action :authenticate_user!
下記の様に、そんなメソッドは無いと言って怒られました、、、
undefined method `authenticate_user!'
原因
エラーの原因は、admin_userモデルをユーザー管理の対象にしていたのが原因でした。
rails generate devise AdminUser
上記の様にDeviseのジェネレーターを実行しました。
今回のようなにUser以外のモデルを使った時は、authenticate_user!のメソッド名が変わるんですね!?
admin_userの場合
before_action :authenticate_admin_user!
としないといけないようです。
といいますか、Githubのドキュメントにもちゃんと書いてありました。
Devise will create some helpers to use inside your controllers and views. To set up a controller with user authentication, just add this before_action (assuming your devise model is 'User'):
before_action :authenticate_user!
If your devise model is something other than User, replace "user" with "yourmodel". The same logic applies to the instructions below.
今回これで、そこそこ無駄な時間を使ってしまいました。
毎回思う、ドキュメントを読みましょう!パタンーんですね。
反省します。
関連記事
実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング
- 作者: 黒田努
- 出版社/メーカー: インプレス
- 発売日: 2014/06/27
- メディア: Kindle版
- この商品を含むブログを見る