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.

ユーザ登録機能の実装(deviseを使用して説明)インストールからdb作成まで

Posted at

はじめに##

deviseを用いてユーザ登録の実装について書かせて頂きます。
自分でもまだまだ理解不十分な所もあるのでアウトプットできればと思います。

ログイン機能の実装##

TwitterやInstagram、メルカリなど多くのウェブサイトにはログイン機能があります。
ユーザに対してアカウントを作り、ユーザを管理する機能です。

それではまずdeviseのインストールから始めます。

deviseのインストール##

ログイン機能を実装するにはまずdeviseというgemをインストールします。

deviseとはユーザー管理機能を簡単に実装するためのgemの事です。
gemってなんぞや?となるかもしれませんが、今回は割愛させて頂きます。🙇‍♂️

それではインストールします。
GemfileはRailsアプリで利用するgemの一覧を管理するファイルです。
様々な記述がされているのでまずは一番最後の行に記述しましょう。

Gemfile.
gem 'devise'

この時シングルクォーテーション忘れずに記述します。
記述し終えたらターミナルでコマンドを実行します。

ターミナル.
bundle install

これでインストールし終えました。
一旦サーバーを起動させます。理由はインストールしたGemの反映するタイミングが、サーバー起動時だからです。

ターミナル.
rails s

インストールできたかはGemfile.lockで確認できます。
(gemfileのレシートようなものと考えております。)

devise設定ファイルを作成##

下記のコマンドを実行しましょう。
これは「設定関連に使用するファイル」を自動で生成するコマンドです。

ターミナル.
rails g devise:install

deviseのUserモデルを作成##

deviseを利用する際には、アカウントを作成するためのUserモデルを新しく作成する必要があります。
作成には通常のモデルの作成方法ではなく、deviseのモデル作成用コマンドでUserモデルを作成します。

アカウントを作成するためのUserモデルを作ります。この中にはアカウント名やemail、passwordなどのデータが入ります。
deviseモデルの作成は通常とはやり方ではありません。

.rb
# 通常のモデル作成の場合(モデル名をuserとする)
rails g model user

# deviseのuserモデル作成の場合
rails d devise user

このコマンドでユーザーに関する、モデルやマイグレーション、ルーティングも自動生成されています。

routes.rb
Rails.application.routes.draw do
  devise_for :users #この行が追加されました
  root to: 'items#index'
end

テーブルの作成##

すでに自動生成されているマイグレーションファイルに内容を記述し、テーブルを作成します。

db/migrate/20XXXXXXXXX_devise_create_users.rb
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

     ##省略


      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

このような感じでマイグレーションファイルがあるかと思います。
5,6行目に注目してください。

db/migrate/20XXXXXXXXX_devise_create_users.rb
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
      t.string :nickname,           null: false #ニックネームを追加しました 
      t.date   :birth_day,          null: false #誕生日を追加しました

デフォルトでメールアドレスとパスワードはあります。
他に名前や誕生日などを追加していく事も可能です。

テーブルが設計できたのでマイグレーションを実行します。

rails g migrate
id email encrypted_password nickname birth_day

このようなdbが完成しました。

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?