deep_cloneableという地味に便利なgemがある。
関連モデルまで含めてclone
してくれる。データをまるっとコピーしたい時に便利。
しかし、has_one
ならいいが、has_many
では注意が必要。
そのままの設定だと、関連先の複数の子要素のうち、一番最後のものしかsaveしてくれない。
解決する方法はこちら。
has_many :logs, dependent: :destroy, autosave: true
このautosave
というオプションにtrueをいれてあげることで、凡ての関連先をsaveしてくれることができる。
よくよく考えれば常識な話。