2016-08-12 10 views
1

저는 레거시 응용 프로그램 간의 통합을 위해 여러 데이터베이스를 사용하는 Ruby on Rails 응용 프로그램을 사용하고 있습니다.레거시 데이터베이스를 사용하여 ActiveRecord에서 UTC 변환 건너 뛰기

Rails 앱 자체에는 기본적으로 UTC로 저장된 DateTime이있는 자체 데이터베이스가 있습니다. 레거시 데이터베이스는 현지 시간으로 시간을 저장합니다. 아직도 내가 어떤 액티브 :: 타임 스탬프 메소드를 오버라이드 (override) 결국 application.rb

답변

2

config.time_zone = 'Europe/Oslo'를 사용하는 동안

나는 읽기와 로컬 시간의 기존 액티브 모델을 저장해야합니다. 나는 로컬 시간에 데이터를 읽고 저장해야하는 모델에 포함 된 자체 타임 스탬프 모듈을 작성했습니다.

class CustomerOrder < ActiveRecord::Base 
    include Timestamp 
end 

module Timestamp 
    extend ActiveSupport::Concern 

    included do 
    skip_time_zone_conversion_for_attributes << :LastUpdate 
    skip_time_zone_conversion_for_attributes << :Created 
    end 

    private 

    def current_time_from_proper_timezone 
    Time.now + Time.now.utc_offset 
    end 

    def timestamp_attributes_for_update 
    [:LastUpdate] 
    end 

    def timestamp_attributes_for_create 
    [:Created] 
    end 

end