2013-04-25 10 views
7

właśnie utworzony nowy obiekt za pomocą formularza i jego updated_at i created_at wartości sąRails wydaje się być tworzenie obiektów w złym strefy czasowej dla created_at, updated_at ceni

created_at: "2013-04-25 03:22:19", updated_at: "2013-04-25 03:22:19", 

Jednak to ~ 7 godzin przed którym Jestem (PST).

Time.now.to_s 
=> "2013-04-24 20:23:12 -0700" 

Jak mogę upewnić się, że strefa czasowa jest zgodna z miejscem, w którym użytkownik ją tworzy?

+0

Czy ustawiłeś ustawienie 'config.time_zone'? – lulalala

+0

Sprawdź 'use_zone' [docs] (http://api.rubyonrails.org/classes/Time.html#method-c-use_zone) --- Jeśli nie ustawiłeś strefy czasowej w pliku config/application.rb file, uruchom 'rake time: zones: all', aby wyświetlić listę poprawnych stref czasowych, do których możesz ją ustawić. – Tomanow

+0

Podpowiedź: sprawdź dla config.time_zone komentarz w config/application.rb –

Odpowiedz

12

Twoje wartości created_at i są zapisywane z twojego serwera do bazy danych, więc zawsze będą znajdować się w strefie czasowej twojego serwera lub aplikacji. Do czasu, gdy serwer przetwarza dane formularza i zapisuje je w bazie danych, nie ma wiedzy o strefie czasowej przeglądarki.

Możesz ustawić strefę czasową Railsów używając config.time_zone, jak zasugerował @lulalala.

Wygląda na to, że chcesz wyświetlać czas swoim użytkownikom w ich macierzystych strefach czasowych. Masz dwie opcje to:

gdy masz strefę czasową zapisany jako atrybut użytkownika można wyświetlać razy swoim użytkownikom tak:

Model.created_at.in_time_zone(@current_user.time_zone) 
2

Sprawdzam strefę czasową irb za pomocą komendy > Time.now.to_s, a czas jest prawidłowy, ale aplikacja zapisze błąd przez 3 godziny. Więc ..

Rozwiązaniem dla mnie było dodanie pliku config.time_zone = "Santiago" do config/environments/development.rb. Lista stref czasowych to here, a mój wpis to

"Santiago" => "America/Santiago" 
Powiązane problemy