チャットルーム管理機能① 作成画面実装編

どうもバンバンです。
今回はRailsでユーザー管理機能を実装する方法を復習を兼ねて 残していこうと思います。
ユーザ管理機能と一緒で全部書くと長くなるので何編かに分けて投稿していきます。
 
はじめに
今回は各種MVCの導入と画面作成までの流れを記述していきます。
いつもの用に用語集と流れで構成していきますが、用語はだんだん過去の記事とかぶってきます。しかし被るほど大事なことという意識で毎回載せていきます(・∀・)
 
用語集
resourcesメソッド
7つのアクションへのルーティングを自動生成するメソッド
ルーティングを生成する=config/routes.rb に記載
引数に:シンボルと指定するとそのパスに対応するルーティングが生成される。
ex) resources :users ←/usesのパスに対応するルーティング
即ちcontrollers/users_controller.rbで7つのアクションを定義できる。
 
onlyオプション
resourcesにオプションとして加えると 指定したアクションのみのルーティングを自動生成する。
ex) resources :users これだけだと7つ全て生成
そこで resources:users, only: :editとすると
controllers/users_controller.rbでeditのアクションのみ定義できる
絞る理由:不要なアクションを設定しておくことで余分なエラーが発生する恐れがあるから。
編集と更新の機能だけあれば良いならonly: [:edit , :update]
 
機能内容
チャットルーム作成画面でチャットルーム名の入力とチャットを行うユーザーの選択を行って1対1でメッセージのやり取りができるチャットルームを作成
 
実装の流れ
 
1チャットルームの新規作成画面を実装する
画面の実装 HTML CSS
 
2モデルの作成
事前に用意した設計書を元にチャットルームの情報を管理する
モデルを作成
ターミナル
rails g model モデル名
 
テーブルの内容を決める
今回保存するのはルーム名だけ
class CreateRooms < ActiveRecord::Migration[6.0]
def change
create_table :rooms do |t|
t.string :name, null: false
↑部屋名の入力がなければ作れないように記述
t.timestamps
end
end
end
 
4データベースへ反映させる
ターミナル
rails db:migrate
 
5画面を表示させる
コントローラーの実装
ターミナル
rails g controller コントローラー名
 
6コントローラーの編集
def new
@room = Room.new
↑newアクション=新規作成
チャットルームを新規作成するからnew
end
 
7ルーティング設定
routes.rb
Rails.application.routes.draw do
devise_for :users
root to: "messages#index"
resources :users, only: [:edit, :update]
 
resources :rooms, only: [:new, :create]
↑コントローラーで動くアクションがnewとcreateのみ
そこでresources:コントローラー名 onlyオプションで指定
チャットルームを新規作成→保存のみでいい
end
 
おわりに
ユーザ管理機能の時もそうですが、Ruby on Railsでは必要な機能を実装
する際は
①必要ならdevise導入
②ビュー作成
③モデル作成→テーブル(DB)編集
④コントローラー作成→編集
⑤ルーティング設定
とまあ大体の流れは一緒な印象です。ここを掴めるとアプリケーション機能実装のスピードがあがりそう