Duplicar registro

Hola, buenas tardes.

Alguien me puede decir si hay algún metodo para duplicar un registro?

Muchas gracias

On 3/2/07, Lourdes [email protected] wrote:

Hola, buenas tardes.

Alguien me puede decir si hay algún metodo para duplicar un registro?

Muchas gracias

@post = Post.clone.save

El método clone está sobrescrito en ActiveRecord y devuelve otro
objeto ActiveRecord con los mismos atributos que el original, pero sin
ID (o sea, es un new_record).

Saludos!

On 3/2/07, Damian J. [email protected] wrote:

On 3/2/07, Lourdes [email protected] wrote:

Hola, buenas tardes.

Alguien me puede decir si hay algún metodo para duplicar un registro?

Muchas gracias

@post = Post.clone.save

Al poner “Send” noté el error :slight_smile:

@post = Post.find(:first).clone.save

El método clone es de instancia (obviamente!) :slight_smile:

Hola, muchas gracias por tu contestación.

Y si tengo que duplicar todo el registro, pero añadiendo + 1 en uno de
los campos? Cual sería la mejor forma de hacerlo?

Saludos y gracias

Y si tengo que duplicar todo el registro, pero añadiendo + 1 en uno de
los campos? Cual sería la mejor forma de hacerlo?

una forma de recorrer los atributos de cualquier objeto AR es llamando
directamente a attributes.each sobre el objeto.
objeto.attributes.each do |att|
obj[att]=obj[att] + 1 #puedes usar succ si son strings o integer
end

Y, ya puestos… si lo quieres hacer como cosa general, lo puedes meter
en el constructor de copia de tu modelo. Así cada vez que a un modelo de
este tipo le asignes otro, lo hace del tirón.

Saludos,

javier ramirez

Estamos de estreno… si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!

On 3/5/07, Lourdes [email protected] wrote:

Hola, muchas gracias por tu contestación.

Y si tengo que duplicar todo el registro, pero añadiendo + 1 en uno de
los campos? Cual sería la mejor forma de hacerlo?

@post = Post.find(:first).clone

@post.contador += 1

@post.save

:slight_smile:

Muchas gracias a todos por contestarme.

He utilizado la opcion de Damian y me ha funcionado correctamente.

Saludos

viendo esta respuesta (correctísima) me doy cuenta de que no sé leer…
yo contesté antes a cómo añadir +1 en TODOS los campos :wink:

lo leí mal, lo siento… (aunque lo de meterlo en el constructor de
copia sigue siendo buena idea si es el comportamiento que queremos
siempre para este modelo… así no hay que repetir el +1 cada vez)

saludos,

j