Dlaczego Time.current
jest równy parsowanym odpowiednikom?Dlaczego te dwa rodzaje danych są różne?
current = Time.current
# Wed, 16 Sep 2015 17:10:56 CEST +02:00
parsed = Time.zone.parse('16 Sep 2015 17:10:56')
# Wed, 16 Sep 2015 17:10:56 CEST +02:00
current == parsed
# false <= What ?!
current.to_i == parsed.to_i
# true
Ticket.create(datetime: current)
# ...
Ticket.find_by_datetime(parsed)
# nil <= Why ?!
ja rzeczywiście kłopoty z tym w aplikacji Ruby on Rails, gdzie staram się znaleźć zapis w oparciu o atrybut datetime, który został przeanalizowany, jak pokazano na ostatnich wierszy.
Naprawdę nie rozumiem. Strefy czasowe są takie same, czasy są takie same do sekund. Co tu się dzieje?
Ponadto, w jaki sposób powinienem kontynuować wyszukiwanie rekordu na podstawie przeanalizowanej daty i godziny?
Twój zegar komputerowy prawdopodobnie ma dokładność pod sekundę ;-) (wskazówka: 'to_f') – Stefan
Dzięki! OK, więc przeanalizowana data i godzina nie ma dokładności pod sekundę. Ale co mam zrobić, aby pobrać rekord w bazie danych? –
Skróć atrybut do całych sekund przed zapisaniem go do bazy danych lub podaj zakres, który obejmuje całą sekundę: 'Ticket.where (datetime: parsowany ... parsowany + 1)' – Stefan