属性id, name, location
のモデルFoo
があります。 Foo
のインスタンスがあります:
f1 = Foo.new
f1.name = "Bar"
f1.location = "Foo York"
f1.save
f1
をコピーし、そのコピーからFoo
モデルの別のインスタンスを作成したいのですが、f1.id
をf2.id
に引き継がないでください(I明示的に割り当てたくないので、必要に応じてdbで処理します)。
各属性を手動でコピーする以外に、これを行う簡単な方法はありますか?組み込み関数はありますか、それとも作成するのが最善の方法でしょうか?
ありがとう
これが ActiveRecord :: Base#clone メソッドの目的です。
@bar = @foo.clone
@bar.save
次の質問に従って、Rails> = 3.1を使用している場合は、object.dup
:
a wrongこれを行う方法は次のとおりです。
f2 = Foo.new( f1.attributes ) # wrong!
f2.save # wrong!
または1行ですが、まだwrong:
f2 = Foo.create( f1.attributes ) # wrong!
詳細についてはコメントを参照してください
あなたはRailsのように重複したレコードを作ることができます
@bar = @foo.dup
@bar.save!