devise gem で生成されるもの・できること
devise gem は色々勝手にできるらしいと聞いたしチュートリアルを見ると実際にそうらしいので自分でもやってみる devise の導入手順とそれぞれの概要は以下
目次
- devise を rails に導入する
- 認証に利用する model を生成するための generator を生成する
- 2 で生成した generator を利用して認証用の model を生成する。同時に認証に利用できるいろんな path も追加する
- もうちょっとなんかやる
1. devise を rails に導入する
Gemfile に devise を追加して bundle
2. 認証に利用する model を生成するための generator を生成する
rails g devise:install
を叩く
- ファイルが生成される
config/initializers/devise.rb
- 認証に利用する model を生成するための generator
- config/locales/devise.en.yml
- locale ファイル
3. 2 で生成した generator を利用して認証用の model を生成する。同時に認証に利用できるいろんな path も追加する
rails g generate devise user
を実行すると、認証に利用する model と認証をハンドリングする path が追加される
生成されるモデル
# == Schema Information # # Table name: users # # id :integer not null, primary key # email :string default(""), not null # encrypted_password :string default(""), not null # reset_password_token :string # reset_password_sent_at :datetime # remember_created_at :datetime # created_at :datetime not null # updated_at :datetime not null # # Indexes # # index_users_on_email (email) UNIQUE # index_users_on_reset_password_token (reset_password_token) UNIQUE # class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable end
追加される path
- 例えば /users/sign_up では登録フォームが既に存在する
# Prefix Verb URI Pattern Controller#Action # new_user_session GET /users/sign_in(.:format) devise/sessions#new # user_session POST /users/sign_in(.:format) devise/sessions#create # destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy # new_user_password GET /users/password/new(.:format) devise/passwords#new # edit_user_password GET /users/password/edit(.:format) devise/passwords#edit # user_password PATCH /users/password(.:format) devise/passwords#update # PUT /users/password(.:format) devise/passwords#update # POST /users/password(.:format) devise/passwords#create # cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel # new_user_registration GET /users/sign_up(.:format) devise/registrations#new # edit_user_registration GET /users/edit(.:format) devise/registrations#edit # user_registration PATCH /users(.:format) devise/registrations#update # PUT /users(.:format) devise/registrations#update # DELETE /users(.:format) devise/registrations#destroy # POST /users(.:format) devise/registrations#create ... Rails.application.routes.draw do devise_for :users ... end
その他
- 認証に関わる様々なメソッドが利用可能になる。一部を下記
4. もうちょっとなんかやる
- デフォルトの view が plain 過ぎるのでカスタマイズしたい
rails generate devise:views
- controller をカスタマイズしたい
rails generate devise:controllers
- oauth を利用したい
- omniauth 編に続く