sorceryとはRailsに認証機能を実装するためのライブラリgemです。

https://github.com/Sorcery/sorcery/wiki/Simple-Password-Authentication

まず最初にsorceryをGemfileに追加して、bundle installします。

gem 'sorcery'

sorceryをアプリケーションにインストールします。

Sayo-MacBook-Pro:emoji_diary SAYO$ bundle exec rails g sorcery:install
Running via Spring preloader in process 72802
      create  config/initializers/sorcery.rb
    generate  model User --skip-migration
       rails  generate model User --skip-migration 
Running via Spring preloader in process 72816
      invoke  active_record
      create    app/models/user.rb
      insert  app/models/user.rb
File unchanged! The supplied flag value not found!  app/models/user.rb
      create  db/migrate/20210522041856_sorcery_core.rb

作成されたファイル

config/initializers/sorcery.rb

app/models/user.rb

db/migrate/20210522041856_sorcery_core.rb

現在のマイグレーションファイル(20210522041856_sorcery_core.rb)

class SorceryCore < ActiveRecord::Migration[6.1]
  def change
    create_table :users do |t|
      t.string :email,            null: false
      t.string :crypted_password
      t.string :salt

      t.timestamps                null: false
    end

    add_index :users, :email, unique: true
  end
end

crypted_passwordsaltカラムは、暗号化されたパスワードです。このカラムを使うことでユーザーにパスワードの情報を閲覧させないようにできます。

ビューとコントローラでパスワードを使うときはpasswordpassword_confirmationカラムを使います。

今回私が作成するUsersテーブルはこのような設計になっています。

nicknameカラムはnull制約

nameカラムにはnull制約、unique制約