0
1

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基礎

Posted at

deviseの導入・実装手順

初投稿です。deviseを使った簡単なユーザー管理機能実装についてアウトプットもかねて自分用にまとめてみます。


まずは実装の流れになります。

1.Gemインストール
2.devise設定ファイル作成
3.Userモデル作成
4.テーブル作成
5.ビュー作成、編集
6.コントローラーでストロングパラメータ設定


1.Gemインストール

Gemfile,ターミナル
gem 'devise'
bundle install
rails s

2.devise設定ファイル作成

ターミナル
rails g devise:install

3.Userモデル作成

ターミナル
rails g devise user
config/routes.rb
devise_for :users #自動で挿入される

4.テーブル作成

db/migrate/20XXXXXXXXX_devise_create_users.rb
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :name,               null: false #カラム追加
      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


      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
ターミナル
rails db:migrate
rails s

5.ビュー作成

ターミナル
rails g devise:views

6.コントローラーでストロングパラメータ設定

app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  private
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
  end
end

実装の基本的な部分は以上です。


devise導入時のエラー

rails s ができない <`const_get': uninitialized constant User (NameError)>

rails g devise:installをしていないのにrails g devise userを行っていた

ターミナル
rails destroy model user #同時にマイグレーションファイルも削除しておく
rails g devise:install #ここからやり直し
rails g devise user
rails db:migrate

これで一応解決できました。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?