ActiveRecordインスタンスをコピーして新しいレコードを作成する方法

ActiveRecordインスタンスをコピーして、新しいレコードを作成する方法に悩んだが、ActiveRecord::Baseクラスのインスタンスメソッドにそれ専用のメソッドが用意されていた。

ActiveRecord#initialize_dup(other)メソッドだ。

このinitialize_dupメソッドの使い方にもちょっとひとクセあったため、使い方を少し紹介しておくことにする。

ActiveRecord#initialize_dup(other)メソッドの使い方

サンプルとしてこのようなPostモデルがあるとする

 

最後のレコードをコピーして新しいレコードを作成してみる

 

これで、Postsテーブルの最後のレコードをコピーして、idが新しく割り振られたレコードを新たに作成して保存するという操作ができた。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=547