Copia de instancias de modelos en Rails

Tengo un modelo Foo con atributos id, name, location . Tengo una instancia de Foo :

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

Me gustaría copiar f1 y, a partir de esa copia, crear otra instancia del modelo de Foo , pero no quiero que f1.id f2.id a f2.id (no quiero asignar explícitamente eso, quiero la db para manejarlo, como debe ser.

¿Hay una forma sencilla de hacerlo, aparte de copiar manualmente cada atributo? ¿Alguna de las funciones integradas o la de escribir sería la mejor ruta?

Gracias

Esto es para lo que es el método ActiveRecord :: Base # clone :

 @bar = @foo.clone @bar.save 

Según la siguiente pregunta, si está utilizando Rails> = 3.1, puede usar object.dup :

¿Cuál es la forma más fácil de duplicar un registro de registro de activación?

Una forma incorrecta de hacer esto sería:

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

o en una línea, pero todavía mal :

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

ver comentarios para detalles

Podría usar los métodos de attributes incorporados que proporciona Rails. P.ej

 f2 = Foo.new(f1.attributes) 

o

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