在Rails中复制模型实例

我有一个模型Foo与属性id, name, location 。 我有一个Foo的实例:

 f1 = Foo.new f1.name = "Bar" f1.location = "Foo York" f1.save 

我想复制f1和从该副本,创buildFoo模型的另一个实例,但我不希望f1.idinheritance到f2.id (我不想明确指定,我想要的数据库处理它,因为它应该)。

有没有简单的方法来做到这一点,而不是手动复制每个属性? 任何内置函数或将写入一个是最好的路线?

谢谢

这就是ActiveRecord :: Base#clone方法的用途:

 @bar = @foo.clone @bar.save 

根据以下问题,如果您使用Rails> = 3.1,则可以使用object.dup

什么是复制activerecordlogging最简单的方法?

一个错误的做法是:

 f2 = Foo.new( f1.attributes ) # wrong! f2.save # wrong! 

或在一行,但仍然是错误的

 f2 = Foo.create( f1.attributes ) # wrong! 

请参阅评论的细节

您可以使用rails提供的内置attributes方法。 例如

 f2 = Foo.new(f1.attributes) 

要么

 f2 = Foo.new f2.attributes = f1.attributes