deviseの使い方
devise
とは簡単にログイン機能が作れるgemパッケージ。
deviseをインストールする準備。
Gemfile
source 'https://rubygems.org' gem 'devise', '3.5.1'
$ bundle install #deviseをインストール
rails g devise:install #deviseを利用可能な状態にする。
ログイン機能を付与したいモデルがすでに存在している場合、(今回はUserモデル)、指定してあげる。 Userモデルが存在しない場合に下記コードを実行すると、Userモデルが生成される。
$ rails g devise User
Userモデルには下記のような変更が加わる。
- database_authenticatable ログイン機能
- registeratable ユーザー登録機能
- recoverable パスワードを忘れた時のリセット機能
- rememberable ログイン状態保持機能
- trackable 最終ログイン時間などを記録する
- validatable ユーザー登録時のバリデーション機能
基本的なログイン機能を使用する場合は、
- database_authenticatable
- registerable
- validatable
以外は削除する。
また、rails g devise User
によってマイグレーションファイルが自動生成される。
不要な機能のためのカラムは作成しないように、マイグレーションファイルから削除する。
以下は参考
class AddDeviseToUsers < ActiveRecord::Migration def self.up change_table(:users) do |t| ## Database authenticatable # t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable # t.string :reset_password_token # t.datetime :reset_password_sent_at ## Rememberable # t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.string :current_sign_in_ip # t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at # Uncomment below if timestamps were not included in your original model. # t.timestamps null: false end # add_index :users, :email, unique: true # add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end def self.down # By default, we don't want to make any assumption about how to roll back a migration when your # model already existed. Please edit below which fields you would like to remove in this migration. raise ActiveRecord::IrreversibleMigration end end
データベースに反映させる。
$ rake db:migrate