올해 Rails Rumble에 참여했습니다. 시간대 문제로 인해 얽혀 버렸습니다.레일 3.2.8 - 시간대 처리 방법?
내 응용 프로그램을 linode에 업로드했으며 EST 표준 시간대 또는 -4 시부 터 UTC에 살고 있습니다.
나는 모델을 가지고하고 다음을 수행하여 일을 저장합니다
def self.processing_creation(user_id, home_id, chore_id)
registered_chore = RegisteredChore.where("DATE(created_at) = ?", Date.today).find_by_user_id_and_home_id_and_chore_id(user_id, home_id, chore_id)
unless registered_chore
registered_chore = RegisteredChore.create(user_id: user_id, home_id: home_id, chore_id: chore_id, created_at: Time.zone.now)
user = registered_chore.user
user.add_one_chore_point
end
registered_chore
end
RegisteredChore.where ("? DATE (created_at를) =", Date.today)이 .find_by_user_id_and_home_id_and_chore_id (USER_ID, home_id, chore_id)
은 데이터가 방금 생성 된 경우에도 false를 반환합니다.
"만들기"는 UTC로 저장되지만 Date.today는 사용자의 현지 시간대를 사용합니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
또 다른 예
문제를 설명하기 :- 내가 EST 시간 오후 11시 기계에 의존을 등록 할 수 있습니다.
- 서버가 이미 다음날에 있습니다 (예 : 12).
- 레일즈는 다음날 날짜 (12)에 데이터를 저장합니다.
- 그러나 사용자는 아직 11 일째입니다.
- 기술적으로 보면 현재의 방법을 사용하는 사용자는 일이 db 및 사용자 인터페이스와 다르기 때문에 항목을 다시 저장할 수 있습니다.
어떻게 해결할 수 있습니까?