2011-02-20 8 views
19

Imagine que tengo un modelo de publicación.Cómo obtener el valor crudo 'created_at' en la base de datos (no un objeto enviado a ActiveSupport :: TimeWithZone)

y un registro en la base de datos será:

23|title_here|content_here|2011-02-20 08:01:55.583222|2011-02-20 08:01:55.583222 

y los dos último campo (2011-02-20 08:01:55.583222|2011-02-20 08:01:55.583222) son created_at y el campo updated_at.

Entonces,

post = Post.find_by_id(23) 

Pregunta: ¿Cómo puedo obtener la cadena created_at: "2011-02-20 08:01:55.583222" en la base de datos?

Como sabemos, el post.created_at devolverá un objeto ActiveSupport::TimeWithZone, no la cadena sin formato.

favor ayuda :)

+0

Puede simplificar la llamada de búsqueda a 'Post.find (23)' – Besi

Respuesta

29

uso attributes_before_type_cast

Post.find(23).attributes_before_type_cast["created_at"] 

o

Post.find(23).read_attribute_before_type_cast("created_at") 

Editar

Se puede llamar como esto también:

Post.find(23).created_at_before_type_cast 

acuerdo con Accessing attributes before they have been typecasted enlace.

+2

La primera solución funciona también con la lectura de datos serializados – morgoth

+1

Ahí va, congratz 5 dígitos @rubyprince –

+0

Gracias @filip. ¡¡¡Hurra!!! – rubyprince

0

Trate

Post.find_by_id(23).created_at.to_s 
+0

Esto obtendrá algo como esto: "2011-02-12 09:10:32 UTC". Pero lo que quiero es "2011-02-20 08: 01: 55.583222" que contiene información en milisegundos. – Croplio

+0

rubyprince tiene la respuesta correcta. – jemminger

Cuestiones relacionadas