/ / Rails 3 ui datepicker - ruby-on-rails, jquery-ui, datepicker

Rails 3 ui datepicker - ruby-on-rails, jquery-ui, datepicker

Mam dziwne zachowanie w mojej aplikacji rails3.

Kiedy wybieram datę za pomocą datepicker interfejsu użytkownika jquery. Widzę to w moim dzienniku

Parameters: {"commit"=>"Save", "log"=> {"log_date"=>"04/20/2011"} ....blah...b}
AREL (1.0ms)  INSERT INTO "logs" ("log_date") VALUES ("2011-04-19 22:00:00.000000")

Pominąłem nieistotne informacje.

Jak widać, Railsy nie tłumaczą poprawnej daty. Zmienia się (w tym przypadku) 20.apr na 19.apr.

Kiedy później zadzwonię

<%= log.log_date.strftime("%d.%m.%y") %>

Dostaję datę Corect, ale kiedy wykonuję to zapytanie

@log_times = Log.group(:log_date)

Wszystkie dzienniki są o jeden dzień wcześniej, niż powinny.

W konsoli dziennik w tym przykładzie wygląda następująco

irb(main):017:0> Log.last
=> [#<Log id: 246,  log_date: "2011-04-19 22:00:00">]

Tak więc zapisano jedną datę na początku, ale kiedy pokazuję ją w widoku, jest poprawna.

Czemu?

Czy mogę użyć narzędzia pobierającego i ustawiającego, aby to naprawić?

Odpowiedzi:

2 dla odpowiedzi № 1

Railsy są zbudowane domyślnie do obsługi stref czasowych. Czasy przechowywane w bazie danych są przechowywane w UTC, a Railsy mają automatycznie przetwarzać tłumaczenie na skonfigurowany czas lokalny.

Czy masz config.time_zone ustawiony w pliku application.rb? Ponadto polecam używanie DateTime zamiast Time kiedy możliwe.