#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は内部で動いてくれているのでカラムを追加しない場合はパラメーターに記述不要です!