Rails gem devise について
Ruby on Rails を学習中、deviseというユーザーも新規登録、ログイン機能などがgemをインストールするだけで簡単に作れちゃうというもの。非常に優れものです。
投稿主の備忘録もかねて手順を簡単に紹介していきます。
deviseをインストールする
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用のマイグレーションファイルが作成されていれば成功です。
ユーザーのマイグレーションファイルには
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にはバリデーションもかけておきましょう。
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
これで簡単ではありますがユーザーの新規登録とログイン機能の実装ができました。