ユーザー管理機能(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
--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を使用すれば、日本語の名前やふりがなも簡単に導入できるようになる。