LoginSignup
18
12

More than 5 years have passed since last update.

Railsで関連モデルも一緒にcloneして新しいレコードを作成する

Last updated at Posted at 2015-02-03

Railsで更新じゃなくて、同じものをコピーして新規作成したい際に関連モデルとかで悩んだのでメモします。

今回は

  • 編集のときにそのオブジェクトを更新するのではなく新たに作成したい。
  • ただフォームで送られてきたのは更新して。
  • そもそもこのフォームでは送られてこない関連モデルもある。
  • その関連モデルも新たに作成したい。

という状況でした。

そんな時に役立ったGemが、deep_cloneableです。だいたいこれ見ればわかるかなと思います。

参考までに

@old_event = Event.find(params[:id])
@event = @old_book.deep_clone(include: [:event_scheduls], except: [{ event_scheduls: [:id] }])
@event.attributes = event_params #strong parameter
@event.save

paramsで送られてくる関連イベントも新たに作成する場合にはidを送ろうとしてくるhiddenをjavascriptとかで消しちゃうか、strong parameterにidなければ問題ないしって感じでしょうか。

他に何かいいやり方がある気もしますが^^;

とりあえずとても助かったGemでした。

18
12
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
18
12