【Rails】ActiveRecordのreplaceメソッド。
ActiveRecordのモデルでuserとitemが1対多の関係で存在したとする。
(has_manyとbelongs_toのアソシエーション)
この場合、userオブジェクト.itemsとすると、
ユーザーに紐づくアイテムすべてが取得できる。
このユーザーに紐づくアイテムをまるっと入れ替えたい時は、
userに紐付けたいitemオブジェクトの配列を
replaceメソッドで渡してあげる。
そうすると新しく加わったものはinsertされるし、
なくなったものはdeleteされる。
例
new_items = ユーザーに紐付けたいitemオブジェクトの配列 user = User.first user.items.replace(new_items)
みたいな。
〜大変参考になりました!!〜
Railsの多対多で関連テーブルの操作色々
※上記リンクにもあるとおり、userと関連がなくなってしまったitemが削除されるわけではないので、関連がなくなった時にitemを削除するようにするにはuserモデルに
has_many :items, :dependent => :destroy
と設定しておきましょう。