経緯
社内で、勤怠管理システムをRuby on Railsで構築しようということになり、先週末から本格的にコーディングをはじめました。
管理系のアプリなので認証機能を実装しようと思い、gemのAuthlogic
を用いて実装を行いました。
大きく困ったところはなかったのですが、一点躓いた点があったので記事にしました。
※本記事はAuthlogicの実装方法をある程度理解していることを前提に書いていますので、ご了承ください。
バージョン情報
Ruby: 2.5.3
Ruby on Rails: 5.2.3
Authlogic: 5.0.2
OS: macOS Majave 10.14.5
躓いた点
- 社員を示すEmployeeモデルを作成し、そのモデルにAuthlogicを適用しようと思ったが
ログイン画面表示時に以下のエラーが発生した。
NameError in UserSessionsController#new
uninitialized constant User
解決方法
- 結論としては、Authlogic::Session::Baseを継承したUserSessionモデルに、Authlogicを適用するモデル名を以下のように明示的に指定する必要があった。
class UserSession < Authlogic::Session::Base
authenticate_with Employee #=> この行を追加
end
解決するまでの道のり
- Google先生に聞いていみる
→ なかなか、当該情報が見当たらず、Userモデルを例にしているチュートリアルがほとんどだった。 - リファレンスを読み漁る
→ 私自身、英語が得意というわけでもないので、なかなか見つけることができなかった。 - teratailで質問をする
→ 質問を投稿したが、自分の情報が足りなかったのか、この現象が当たり前すぎることなのか、回答が得られなかった - 再びリファレンスを読み漁る
→ ここでようやく、authenticate_with
をリファレンスから見つけることができました
( https://www.rubydoc.info/github/binarylogic/authlogic/master/Authlogic/Session/Klass/Config )
反省
- 英語のリファレンスはなかなか読むのに苦労しましたが、キーワードで調べていくうちに見つけることができたので、
リファレンスを読むことの大切さを今更ながら、改めて実感しました。 - なかなか今回の現象の記事等が出てこなかったので、この記事が少しでもお役に立てれば幸いです。