deviseの導入


Railsでdeviseの導入流れ

1. Gemをインストールしてサーバーを再起動

2. コマンドを利用してdeviseの設定ファイルを作成

3. コマンドを利用してUserモデルを作成

4. 未ログイン時とログイン時でボタンの表示を変える実装

5. コントローラーにリダイレクトを設定

deviseのgemインストール

Gemfile
# 中略
gem 'devise'
ターミナル
# サーバーを起動
% rails s

コマンドを実行して設定ファイルを作成

ターミナル
# deviseの設定ファイルを作成
% rails g devise:install

コマンドを実行してUserモデルを作成

ターミナル
# deviseコマンドでUserモデルを作成
% rails g devise user

マイグレーションを実行

ターミナル
# マイグレーションを実行
% rails db:migrate

ローカルサーバーを再起動

ターミナル
# ctrl + Cでローカルサーバーを終了

# 再度ローカルサーバーを起動
% rails s

リダイレクト処理を用意

app/controllers/tweets_controller.rb
class TweetsController < ApplicationController
  before_action :set_tweet, only: [:edit, :show]
  before_action :move_to_index, except: [:index, :show]

  def index
    @tweets = Tweet.all
  end

  def new
    @tweet = Tweet.new
  end

  def create
    Tweet.create(tweet_params)
  end

  def destroy
    tweet = Tweet.find(params[:id])
    tweet.destroy
  end

  def edit
  end

  def update
    tweet = Tweet.find(params[:id])
    tweet.update(tweet_params)
  end

  def show
  end

  private
  def tweet_params
    params.require(:tweet).permit(:name, :image, :text)
  end

  def set_tweet
    @tweet = Tweet.find(params[:id])
  end

  def move_to_index
    unless user_signed_in?
      redirect_to action: :index
    end
  end
end

コマンドを実行してdevise用のビューを作成

ターミナル
rails g devise:views

usersテーブルにnicknameカラムをstring型で追加

ターミナル
# ディレクトリがpictweetであることを確認
% pwd

# usersテーブルにnicknameカラムをstring型で追加するマイグレーションファイルを作成
% rails g migration AddNicknameToUsers nickname:string

# 作成したマイグレーションを実行
% rails db:migrate
ターミナル
# ctrl + Cでローカルサーバーを終了

# 再度ローカルサーバーを起動
% rails s

application_controller.rbを編集

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には元々デフォルトでemailとpasswordは内部で動いてくれているのでカラムを追加しない場合はパラメーターに記述不要です!