tusbasaのブログ

業務や勉強中に調べたことを自分用にメモするブログ

【rails】中間テーブルの自動作成

多対多のリレーションを持つモデルの片方を作成する場合 パラメータにもう片方の モデル名+ids のパラメータ名で複数のidを持たせる。 そうすると、そのidと作成するモデル側のidを使って中間テーブルが自動的に作られる。

User
has_many :groups, through: :user_groups

UserGroup
belongs_to :user
belongs_to :group

Group
has_many :users, through: :user_groups

user_params {...., group_ids: [1,2,3] }

user = User.create!(user_params)

上記の場合以下のUserGroupモデルのレコードが作成される

{ user_id: user.id, group_id: 1 }
{ user_id: user.id, group_id: 2 }
{ user_id: user.id, group_id: 3 }

参考

rails.densan-labs.net