Find_or_create saber que funcion corrio

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!