0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

中間テーブルにデータが保存される仕組み

Posted at

#目次
①結論
②データを配列で保存する方法

###①結論
親要素を保存するときに、それに紐づいていてかつ、保存したいデータを配列で指定すると、その情報が中間テーブルに保存されるようになっている。

###②データを配列で保存する方法
親要素が登録される時に、has_many :○ ,through: ■_○で紐付いている○の部分を単数形にし、_idsをくっつけて保存をストロングパラメーターで許可してあげると、中間テーブルに保存される。

roomモデル
class Room < ApplicationRecord
  has_many :room_users 
  has_many :users ,through: :room_users こちら
end

roomsコントローラー
 def create
    @room = Room.new(room_params)
    if @room.save
      redirect_to root_path
    else
      render :new
    end
  end

private

  def room_params
    params.require(:room).permit(:name,user_ids:[]) user+_ids
  end

 親要素のroomが保存される時に、roomのnameとそれに紐づく複数のuser_idが中間テーブルに入ることになる。

※補足:なぜ、モデル+_idsが使えるのか?
⇒この答えは、has_manyでアソシエーションしているからである。
○参考記事
https://web-camp.io/magazine/archives/17680#i-3

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?