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