ほげほげパッチ

有る事無い事 徒然なるままに

メソッドあれこれ(references型、select要素、where.not)

今日の工夫

  1. コードは基本手打ちして、VScodeのチェック機能で後からチェックする。
    間違いやすいところのチェックになる。

  2. カリキュラムからVScodeに画面を切り替えるときは、該当テキストをドラッグしておく。
    戻ってきたときにすぐに目がいくように。

  3. コードの区切りが分からなくなるので、
      「--------------------------」
    コメントアウトして入れる。

references型

外部キーのカラム追加@マイグレーションファイル

# t.refernces :カラム名
t.refernces :user, foreign_key: true

# => user_idカラムが生成


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

% rails c

[1] irb(main)> Room.create(name: "ルーム1", user_ids:[1,2])

Roomモデルに対してcreateを実行すると、同時に中間テーブルにもレコードが保存される。

user_idsで、userテーブルのidを指定し、紐づけている

select要素、option要素

<!-- プルダウンを作るときに使う。 -->
<select>
  <option>選んでください</option>
  <option>hoge1</option>
  <option>hoge2</option>
</select>
<!-- name属性でパラメーターとしての名前を指定 -->
<!-- 後ろに[]をつけると、配列になる -->
<select name="hoge[user_ids][]"></select>
<!-- value属性でパラメーターの値を指定 -->
<!-- 表示はuser.name、valueはuser.id -->
<option value=<%= user.id %>><%= user.name %></option>

=> {"user_ids" => ["選んだuser.id"]}
<!-- 後から下記も追記すると、current_user.idもパラメータに含められる -->
<input name="hoge[user_ids][]" value=<%= current_user.id %>>
=> {"user_ids" => ["選択した値", "current_user.id"]}


where.not("条件”)

ActiveRecord: 〜以外のレコードを指定

# ログインユーザー以外で繰り返し処理
User.where.not(id: current_user.id).each do |user|


配列をストロングパラメータに渡す

# selectの時と同じ。[]をつける。
params.require(:hoge).permit(user_ids: [])