ECのウェブ担当者のメモ

ECサイトを運営管理している、WEB担当プログラマのメモ

スポンサーリンク

Deviseで undefined method `authenticate_user!'で怒られた時

f:id:jun9632:20160308085011p:plain

github.com

管理画面のユーザー管理と認証に、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.

今回これで、そこそこ無駄な時間を使ってしまいました。 毎回思う、ドキュメントを読みましょう!パタンーんですね。
反省します。

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

marketing-web.hatenablog.com

marketing-web.hatenablog.com

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング