在Rails中复制模型实例
我有一个模型Foo
与属性id, name, location
。 我有一个Foo
的实例:
f1 = Foo.new f1.name = "Bar" f1.location = "Foo York" f1.save
我想复制f1
和从该副本,创buildFoo
模型的另一个实例,但我不希望f1.id
inheritance到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