Sí, puede comparar directamente el valor de un campo de fecha/hora created_at
ActiveRecord con un objeto normal DateTime
(como el que puede obtener para analizar la cadena que tiene).
En un proyecto que tengo un objeto de valor que tiene un objeto created_at de fecha y hora:
imac:trunk luca$ script/console
Loading development environment (Rails 2.3.2)
>> Value.first.created_at
=> Fri, 12 Jun 2009 08:00:45 CEST 02:00
>> Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> Wed Jun 03 22:57:45 0200 2009
>> Value.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> true
El campo created_at se define como:
create_table "values", :force => true do |t|
[...]
t.datetime "created_at"
end
N. B. si el campo es una fecha y no una fecha y hora, entonces usted necesita para convertirlo en un tiempo:
Post.first.created_at.to_time > Time.parse("2009-06-03 16:57:45.608000 -04:00")
o analizar una fecha:
Post.first.created_at > Date.parse("2009-06-03 16:57:45.608000 -04:00")
de lo contrario obtendrá un:
ArgumentError: comparison of Date with Time failed
Solo una nota: la comparación de los propios objetos Datetime de los raíles con otros puede dar resultados muy inesperados. Notablemente ... ver a continuación: 'p.created_at # Vie, 28 Ago 2015 21:45:14 UTC +00: 00' 'p.updated_at # Vie, 28 Ago de 2015 21:45:14 UTC +00: 00 ' ' p.created_at == p.updated_at # false' Así que tienes que hacer esto ... 'p.created_at.to_i == p.updated_at.to_i # true' más información aquí: http: // stackoverflow .com/questions/19599792/comparing-identical-datetime-objects-in-ruby-why-are-these-two-datetime-nows – bwest87