Sì, è possibile confrontare direttamente il valore di un campo data/ora ActiveRecord created_at
con un oggetto regolare DateTime
(come quello che è possibile ottenere analizzando la stringa che si possiede).
In un progetto ho un oggetto valore che ha un oggetto datetime created_at:
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
Il campo created_at è definito come:
create_table "values", :force => true do |t|
[...]
t.datetime "created_at"
end
N.B. se il campo è una data e non un datetime, allora avete bisogno di convertirlo in un tempo:
Post.first.created_at.to_time > Time.parse("2009-06-03 16:57:45.608000 -04:00")
o di analizzare una data:
Post.first.created_at > Date.parse("2009-06-03 16:57:45.608000 -04:00")
altrimenti si otterrà una:
ArgumentError: comparison of Date with Time failed
Solo una nota: confrontare i binari degli oggetti datetime con gli altri può dare risultati molto inaspettati. In particolare ... vedi sotto: 'p.created_at # Ven, 28 Ago 2015 21:45:14 UTC +00: 00' ' p.updated_at # Ven, 28 Ago 2015 21:45:14 UTC +00: 00 ' ' p.created_at == p.updated_at # false' Quindi devi fare questo ... 'p.created_at.to_i == p.updated_at.to_i # true' maggiori informazioni qui: http: // stackoverflow .com/domande/19599792/confrontando-identico-datetime-oggetti-in-ruby-perché-sono-i-due-datetime-nows – bwest87