How to devise(導入)
概要
Heroku, Basic認証に引き続きフリマアプリ作成において実装したdeviseもアウトプットしていきます。
deviseとは
deviseは、ユーザー認証機能を実装できるgemです。
deviseを利用すると、
・新規登録機能
・ログイン機能
・ログアウト機能
・SNS認証機能
・メール認証機能
・アカウント編集機能
などが実装できます。今回はdeviseの導入とログイン、ログアウトの機能を実装していきます。
使い方
deviseのインストール
Gemfileを編集して、gemをインストールしていきます。
# Gemfile 一番下
gem 'devise'
bundle installを行います。
% bundle install
ここで、一旦ターミナルを再起動します。Gemを反映させるためです。
% rails s
ターミナルが再起動したら、deviseの設定ファイルをアプリケーションに作成します。
% rails g devise:install
以下のようなログが流れます。
create config/initializers/devise.rb create config/locales/devise.en.yml =============================================================================== Some setup you must do manually if you haven't yet: 1. Ensure you have defined default url options in your environments files. Here is an example of default_url_options appropriate for a development environment in config/environments/development.rb: config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } In production, :host should be set to the actual host of your application. 2. Ensure you have defined root_url to *something* in your config/routes.rb. For example: root to: "home#index" 3. Ensure you have flash messages in app/views/layouts/application.html.erb. For example: <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p> 4. You can copy Devise views (for customization) to your app by running: rails g devise:views ===============================================================================
1〜4の英文は、deviseから開発者への指示、ヒントになっています。和訳は以下の通りです。
1. Ensure you have defined default url options in your environments files.
デフォルトのURL設定ができているか確認してください。
Here is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
開発環境であれば、デフォルトのURL設定はlocalhost:3000です。例をもとに設定してください。
In production, :host should be set to the actual host of your application.
本番環境では、自分でアプリケーションのホストURLを設定しなければなりません。
2. Ensure you have defined root_url to *something* in your config/routes.rb.
For example:
root to: "home#index"
ルーティングにルートURLが設定されていることを確かめてください。
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
フラッシュメッセージをapplication.html.erbに記述しましょう。
変数は以下のようにnoticeやalertに格納されています。
4. You can copy Devise views (for customization) to your app by running:
rails g devise:views
rails g devise:viewsを実行するとビューファイルを作成することができますので、カスタマイズしてください。
Userモデルの作成
Userモデルを作成していきます。deviseでモデルを作成する場合はrails g deviseコマンドを使って作成します。
% rails g devise user
モデルと同時にマイグレーションファイルも作成されています。
また、ルーティングもdeviseの機能を使えるように自動で追記されています。
Rails.application.routes.draw do devise_for :users end
自動生成されたマイグレーションファイルを編集して、テーブルを作成します。
% rails db:migrate
以上で、簡易的なログイン機能の実装は完了です。
ただし、このままではデザインも味気なく、保存できるデータも限られるので、ビューやコントローラーを編集する必要があります。
今回は導入編なので、ここまでとします。
参考
https://www.sejuku.net/blog/13378
https://qiita.com/Pirori3182/items/afd1604cb0d206b2e3cc
https://pikawaka.com/rails/devise