ユーザー管理機能(Deviseの導入)

内容

Deviseを使用したユーザー管理機能および新規投稿機能の実装を行う。

ユーザー管理機能の実装

1. Deviseを導入

Gemfile

# 1番下に記述
gem 'devise'

ターミナル

% bundle install
% rails s

2. Userモデルを作成し、マイグレーションファイルを編集

ターミナル

# modelではなくdeviseになることに注意
% rails g devise user

DB設計を参考に、必要なカラムをマイグレーションファイルに記述
ターミナル

% rails db:migrate
% rails s

3. ビュー、CSSの作成

ターミナル

rails g devise:views

ビューを編集
サインアップ後トップページへログインするため、必要なコントローラーとアクション、ビューを作成
ターミナル

rails g controller posts index

rootパスの設定
routes.rb

root to: 'posts#index'

トップページのビューも編集
emailとpassword以外のカラム情報を保存できるよう記述
application_controller

before_action :configure_permitted_parameters, if: :devise_controller?

private
def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :last_name, :first_name, :last_name_reading, :first_name_reading, :birthday])
end

4. バリデーションの設定

emailとpassword以外のバリデーションをuser.rbに記述

5. Userモデルの単体テストコードの実装

Gemfile

group :development, :test do
  gem 'rspec-rails'
  gem 'factory-bot-rails'
  gem 'faker'
end

ターミナル

% bundle install
% rails s
% rails g rspec:install

.rspec

--format documentation

specディレクトリ内にfactoriesディレクトリを作成し、その中にusers.rbファイルを作成
ユーザー情報をFactoryBotで指定
テストコードを記述するファイルを用意
ターミナル

% rails g rspec:model user

テストコードをuser_spec.rbファイルに記述
実装が完了後、rspecコマンドでテストを実行
ターミナル

% bundle exec rspec spec/models/user_spec.rb

新規投稿機能の実装

1. Postモデルを作成し、マイグレーションファイルを編集

ターミナル

% rails g model post

DB設計を参考に、必要なカラムをマイグレーションファイルに記述
ターミナル

% rails db:migrate
% rails s

2. ビュー、CSSの作成

ビューファイルを作成し、編集

次回

新規投稿機能のビューファイル編集の途中から。

参考

FactoryBotでランダムな値を生成する時、Fakerを使用する。
日本語対応もできるが、名前のふりがな等は対応していない。
そこでgimeiというgemを使用すれば、日本語の名前やふりがなも簡単に導入できるようになる。