この記事では、Ruby on Railsで人気のあるGem、devise
を用いてログイン機能を実装する方法を備忘録としてまとめていきます。
1. 前提条件
- Ruby on Railsがインストールされていること
- 新規のRailsアプリケーションが作成されていること
2. Devise Gemのインストール
まずは、Gemfileに以下の行を追加します。
gem 'devise'
その後、ターミナルで以下のコマンドを実行して、gemをインストールします。
$ bundle install
3. Deviseのセットアップ
インストールしたら、Deviseの初期設定を行います。
$ rails generate devise:install
これにより、いくつかの初期設定ファイルや、インストール時の指示が表示されます。これに従って設定を進めていきましょう。
4. Userモデルの作成
次に、ユーザーモデルを作成します。
$ rails generate devise User
このコマンドにより、Userモデルや関連ファイル、マイグレーションファイルなどが生成されます。
5. マイグレーションの実行
$ rails db:migrate
このコマンドで、usersテーブルがデータベースに作成されます。
6. ログイン、ログアウト、サインアップのViewを作成
Deviseはデフォルトでviewを提供していますが、カスタマイズしたい場合は以下のコマンドでアプリケーションにコピーしてカスタマイズすることができます。
$ rails generate devise:views
7. ルーティングの設定
Deviseのインストールにより、config/routes.rb
には以下のルートが追加されます。
devise_for :users
これにより、ログイン、ログアウト、サインアップ、パスワードの再設定などのルートが自動で設定されます。
8. 認証の追加
任意のコントローラに認証を追加するには、そのコントローラ内で以下のように記述します。
before_action :authenticate_user!
これにより、そのコントローラのアクションを実行する前にユーザーのログインを要求するようになります。
9. カラムの追加
デフォルトで生成されるUserモデルには、emailとpasswordのカラムしかありませんが、例えば名前やユーザ名を追加したい場合は以下のようにします。
- マイグレーションを生成:
$ rails generate migration AddNameToUsers name:string
- マイグレーションを実行:
$ rails db:migrate
10. 認証以外の機能: パスワードのリセット、確認メールの送信
devise
は、認証以外にも多くのユーザー関連の機能を提供しています。これには、パスワードのリセット、アカウントの確認メールの送信、アカウントのロックなどがあります。
これらの機能を有効にするには、config/initializers/devise.rb
の設定を変更するだけで十分です。ただし、メールの送信機能を使用する場合は、メールの設定が必要になります。
11. 認証のカスタマイズ: バリデーション、コールバック
devise
で生成されるモデルは、通常のActiveRecordモデルと同様にカスタマイズすることができます。バリデーションを追加したり、コールバックを使用して特定のアクションをトリガーすることができます。
class User < ApplicationRecord
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
validates :name, presence: true, length: { maximum: 50 }
end
12. Viewのカスタマイズ: スタイリング
devise
が提供するViewは、BootstrapやTailwind CSSなどのフレームワークを使用してスタイリングすることができます。これにより、アプリケーションの全体的なデザインに合わせて、ログインやサインアップのページをカスタマイズすることができます。
まとめ
devise
は、Railsアプリケーションにログイン機能を追加するための非常に強力なツールですが、その機能は上記に示した基本的なものだけではありません。公式のドキュメントを読みながら、アプリケーションのニーズに合わせてカスタマイズを進めてみてください。
参考文献