Ruby
Rails

deep_cloneを用いたassociationの保存について

More than 1 year has passed since last update.

deep_cloneableという地味に便利なgemがある。
関連モデルまで含めてcloneしてくれる。データをまるっとコピーしたい時に便利。

しかし、has_oneならいいが、has_manyでは注意が必要。
そのままの設定だと、関連先の複数の子要素のうち、一番最後のものしかsaveしてくれない。

解決する方法はこちら。

has_many :logs, dependent: :destroy, autosave: true

このautosaveというオプションにtrueをいれてあげることで、凡ての関連先をsaveしてくれることができる。
よくよく考えれば常識な話。