1

여기 상황이 있습니다. 우리는 heroku에서 실행되는 3.2 레일 앱과 전 세계의 개발자를 보유하고 있습니다. 우리는 모든 것을 UTC로 표준화하려고합니다. 우리 팀은 심지어 자신들끼리 UTC를 말합니다 (예 : 회의 시간 계획시). 우리는 앱이 똑같이하기를 원합니다. 나중에 다시 표시하기 위해 사람들을 현지 시간대로 변환 할 수 있습니다.activerecord 및 시간대

문제점은 포럼에 새 게시물을 만드는 것과 같이 데이터베이스에 무언가를 저장할 때 내 로컬 시간 (내 컴퓨터에서보고 한 시간)이 UTC라고 생각하여 문제없이 저장합니다.

예를 들어 2 월 14 일 목요일 점심 시간은 호주 멜버른 (UTC + 11)입니다. 나는 새 게시물을, 다음 콘솔을 보면 : 당신이 볼 수 있듯이

1.9.3p194 :009 > p = Post.first 
=> #<Post id: 12, author_id: 1, subject: "Another post ", body: "a very recent one!", created_at: "2013-02-14 12:13:53", updated_at: "2013-02-14 12:13:53", slug: "test1-20130214-another-post", forum_id: 1> 
1.9.3p194 :010 > p.created_at 
=> Thu, 14 Feb 2013 12:13:53 UTC +00:00 

의 created_at 타임 스탬프는 14 일 점심 시간에 따라 저장 및 UTC에도 그 시간 것으로 판정을 받았습니다. 내가 실제로 원하는 것은 현지 시간을보고 멜버른에 있다는 것을 알고이 시간 (11 시간)을 뺀 UTC로 변환합니다.

config.time_zone = 'UTC' 
config.active_record.default_timezone = 'UTC' 

(? 내가 아마 그것을 해결하는 것 '호주/멜버른에 config.time_zone을 변경하는 생각)

:

지금, 나는 내 설정/application.rb에 다음 라인을 편집 할 수 있습니다 알고

그러나 그 중 하나를 "호주/멜버른"(또는 무엇이든)으로 변경하면 배포 된 앱 (Heroku)과 메릴랜드, 오레곤 및 글래스고의 공동 개발자는 어떻게됩니까? 우리 모두가 우리 시대를 개별적으로 설정해야합니까? 환경 변수를 통해해야할까요? 다른 제안?

답변

2

OK, 그것은 다음과 같습니다, 그래서 우리를 위해 그것을 해결

config.time_zone = 'UTC' 
config.active_record.default_timezone = :local 

우리는 조금 반신 반의하고있어 기다려 우리는 배포 및/또는 모든 사람의 시간대에 우리의 테스트 스위트를 실행하면 어떻게되는지 볼 수 있습니다 하지만 지금은 마치 멜버른에서 작동하는 것처럼 보입니다.)

+0

Postgres 데이터베이스에서도 시간대를 설정할 수 있지만 위의 경우 사용한 구성이 필요합니다. – catsby