TECH EXPERT 19日目 チャットアプリ開発 5. サーバーサイドの実装

今 コミットしながら思ったのですが GitHubに保存することで

過去に行ったアプリケーション作成手順を分解して見れる+流れもわかるので

類似品なら1から作れる。それ以上も出来そう。控えめに神か?

 

まだ管理、運用とかはピンとこないが自身がアプリケーション作るのに

これの存在は必須でしょうと感じた。

 

5. サーバーサイドの実装 (既存の部分なので新しい概念や気付き中心)

ルーム管理

before_action :authenticate_user! #ログイン済みユーザーとの条件分岐 メソ

コントローラーの先頭に、before_action :authenticate_user! 
と記述するより、ログインしていないユーザーをサインアップの画面に促すことができます。

 

references 中間テーブル作成時使用
Railsで外部キーのカラムを追加する際に、用いる型
foreign_key: trueという制約を設けることで、他テーブルの情報を参照できる

 

コンソール操作 中間テーブルを通じてレコードを作成

「モデル名」+「_ids」  roomという親要素を保存するときに、

user_idsで所属させたいユーザーを配列で指定すると、その情報が中間テーブルに保存される仕組みになっている。

 

 

 

プルダウン作成 ビュー 以下2つの要素を使う

select要素
select要素:プルダウンのようなセレクトボックスを作成するための要素。select要素のname属性に任意の値を指定することで、paramsを通してその値をコントローラーへ渡すことが可能。

option要素:select要素の中でoption要素を記述することで、プルダウンの選択肢になる要素です。

 

ul li 要素のリスト化に近い 

 

ログイン中以外のユーザーのレコード取得

User.all.where.not(id: current_user.id).each do |user| #現在ログインしてるユーザー以外のレコードの取得

モデル名.where("条件")と記述することで条件に一致したレコードを配列として取得できる。notは条件に一致したレコード以外。

 

コメント投稿機能

 

lメソッド
l(エル)メソッドは日付や時刻を表示するメソッド

日本時刻
ja:
time:
formats:
default: "%Y/%m/%d %H:%M:%S"

 

オプションにformatあり  書式切替

 

 

画像投稿機能

 

Active Storage
Active Storageとはファイルアップロードを簡単に実装できるGem

 

Messagesテーブルとimageカラムのアソシエーション

models/message.rbファイルを開いて、以下のように記述

has_one_attached :image