Hola a todos,
En mi aplicaion estoy utilizando el método find_or_create_by_name, y me
interesa saber cual de los dos fue el que se ejecuto, es decir quiero
saber
si el objeto se creo recién o si se leyó de la base datos. Hay alguna
forma
de saber esto?
Yo tenia la idea de que en Ruby puedo sabes si un objeto se ha creado
recién. ¿m…?
muchas gracias,
saludos,
On 4/21/07, Juan P. [email protected] wrote:
En mi aplicaion estoy utilizando el método find_or_create_by_name, y me
interesa saber cual de los dos fue el que se ejecuto, es decir quiero saber
si el objeto se creo recién o si se leyó de la base datos. Hay alguna forma
de saber esto?
Podrías hacer algo
así:
foo = Foo.find_or_initialize_by_name(name)
if foo.new_record?
hacer algo
foo.save
else
hacer otra cosa
end
Es un poco verbose, pero no estoy en mi máquina y no recuerdo si
find_or_create puede recibir un bloque para ejecutar antes de
grabarse…
Yo tenia la idea de que en Ruby puedo sabes si un objeto se ha creado
recién. ¿m…?
Los objetos de Ruby que devuelve ActiveRecord son siempre “nuevos”,
incluso si la fila estaba cacheada. Es decir:
Foo.find(:first).object_id == Foo.find(:first).object_id
=> false
Saludos!