LoginSignup
1
0

More than 3 years have passed since last update.

Rails gem devise について

Ruby on Rails を学習中、deviseというユーザーも新規登録、ログイン機能などがgemをインストールするだけで簡単に作れちゃうというもの。非常に優れものです。

投稿主の備忘録もかねて手順を簡単に紹介していきます。

deviseをインストールする

Gemfile

gem 'devise'

ここで注意すべきなのはdeviceではなくdevise

私がプログラミング超初心者だった時このスペルミスでエラーが出てしまいました。

ここでgemをインストールするのでコマンドラインで$ bundle installします

また、devise用のインストールコマンドがあるので実行します。

ターミナル

$ rails g devise install

ここまででdeviseのインストールが完了します。

deviseのモデルを作成する

マイグレーションファイルに記載した情報を基にデータベースの型、制約を設定していきます。

ターミナル
$ rails g devise user

普段Railsアプリケーションでモデルを作成していく時には $ rails g model userというコマンドを打てばモデルの作成ができますがここではdeviseコマンドでモデルを作成します。

このコマンドを実行後model/user.rbとuser用のマイグレーションファイルが作成されていれば成功です。

ユーザーのマイグレーションファイルには

20200603_devise_create_users.rb

class DeviseCreateUsers < ActiveRecord::Migration[5.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: ""

      # 〜省略〜
    end

    add_index :users, :name, unique: true
    # usersの情報全てに検索がかけれるようにadd_indexを貼る

nameカラム、eーmailカラムなどが設定され、それぞれnull: falseで制約がかけられておりnullであればユーザーの新規登録でエラー表示されるようになります。

user.rbにはバリデーションもかけておきましょう。

user.rb
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable,  :validatable

  validates :name, presence: true, uniqueness: true
   # nameカラムが空でないこと、重複したnameは登録できないようにバリデーションをかけている

end

バリデーションには様々な制約を設けることができ、もっと知りたいという方はこちらから!
https://qiita.com/h1kita/items/772b81a1cc066e67930e

これでデータベースと紐づくマイグレーションファイルとモデルの設定が完了しました。

ターミナル
$ rails db:migrate

マイグレーションファイルをマイグレートしておきましょう。

ビューファイルの準備

ビューファイルもdeviseコマンド一発で作成できます。

ターミナル
$ rails g devise:views users

これで簡単ではありますがユーザーの新規登録とログイン機能の実装ができました。

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