0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails] devise導入方法

Last updated at Posted at 2021-04-28

はじめに

自作のRailsアプリケーションでdeviseを使用したので備忘録として残しておきます。

deviseとは

railsのgemの一つでログイン認証機能を簡単に実装することができる。

インストール

Gemfileに以下のように記述してください

gem 'devise'

ターミナルで以下コマンドを実行します。

$ bundle install
$ rails g devise:install

以上でインストールは終わりです

ビューファイルの作成

以下のコマンドでdeviseの認証周りが実装されたビューファイルが作成されます。

$ rails g devise:views

見た目はかなり簡素になっているのでビューファイルを編集する必要があります。

Userモデルの作り方

deviseをインストールをすると認証が使えるモデルを作成することができます。
rails g model userではなく以下のコマンドを使います。

$ rails g devise user

このコマンドを実行すればログイン認証ができるファイルが自動で作成されます。
同時にroutes.rbdevise_for :usersが追記されサインアップやログイン、ログアウトのルーティングが自動で作成されます。
マイグレーションファイルは以下になっています。
最初はnameカラムがないので入れておきましょう。


class DeviseCreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_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.inet     :current_sign_in_ip
      t.inet     :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

      t.string :name                   #ここにnameを追加
      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
end

またマイグレーションファイルを追記した場合はuserカラムを受け入れてくれるようにapplication_controller.rbに以下の記述をしておきましょう

# 以下を追加
before_action :configure_permitted_parameters, if: :devise_controller?

def configure_permitted_parameters
        # サインアップ時にusernameのストロングパラメータを追加
        devise_parameter_sanitizer.permit(:sign_up, keys: [:username, :image])
        # アカウント編集の時にnameとprofileのストロングパラメータを追加
        devise_parameter_sanitizer.permit(:account_update, keys: [:username,:image,:profile])
end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?