Ja, Sie können direkt den Wert eines created_at
ActiveRecord Datum/Uhrzeit-Felds mit einem regulären DateTime
Objekt vergleichen (wie das, das Sie erhalten können, wenn Sie die Zeichenfolge parsen).
In einem Projekt, das ich ein Wertobjekt habe, die ein created_at Datetime-Objekt hat:
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
Das created_at Feld ist definiert als:
create_table "values", :force => true do |t|
[...]
t.datetime "created_at"
end
N. B. wenn Ihr Feld ein Datum und kein Datetime ist, dann müssen Sie es zu einem Zeitpunkt, konvertieren:
Post.first.created_at.to_time > Time.parse("2009-06-03 16:57:45.608000 -04:00")
oder ein Datum analysieren:
Post.first.created_at > Date.parse("2009-06-03 16:57:45.608000 -04:00")
sonst werden erhalten Sie ein:
ArgumentError: comparison of Date with Time failed
Nur ein Hinweis: Vergleichen Rails eigene Datetime Objekte gegen andere kann sehr unerwartete Ergebnisse liefern. Bemerkenswert ... siehe unten: 'p.created_at # Fr, 28 Aug 2015 21:45:14 UTC +00: 00' ' p.updated_at # Fr, 28 Aug 2015 21:45:14 UTC +00: 00 ' ' p.created_at == p.updated_at # false' Also müssen Sie dies tun ... 'p.created_at.to_i == p.updated_at.to_i # true' mehr Infos hier: http: // stackoverflow com/questions/19599792/comparing-identic-datetime-Objekte-in-ruby-why-sind-diese-zwei-datetime-nows – bwest87