既存のレコードの正確なコピーである新しいレコードを作成しようとしていますが、もちろん、一意の新しいレコードが必要id
です。意味:id
既存のレコードから新しいレコードにコピーしたくない。
現在のコード
@blog = Blog.new(title: "some title")
@blog.save
@copy_of_existing_blog = Blog.new(@blog.attributes)
@copy_of_existing_blog.save
次のエラーが返されます。
ActiveRecord :: RecordNotUnique
エラーが発生している理由を理解しています。id
既存のレコードと重複しているレコードを保存しようとしています。を除いたレコードの正確なコピーを作成id
し、データベースに保存する方法がわかりません。
属性ハッシュからIDを除外する必要があります。ActiveSupportには、Hash#except
これを行う便利なメソッドがあります。
Blog.new(@blog.attributes.except("id"))
さらに、タイムスタンプも除外することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加