2016-08-12 7 views
1

私は、レガシーアプリケーション間の統合に複数のデータベースを使用するRuby on Railsアプリケーションを使用しています。レガシーデータベースを使用したActiveRecordのUTC変換をスキップ

Railsアプリケーション自体には、デフォルトであるように、DateTimeがUTCで保存された独自のデータベースがあります。レガシーデータベースは現地時間で時間を保存します。

まだconfig.time_zone = 'Europe/Oslo'application.rb

答えて

2

を使用している間、私はいくつかのActiveRecord ::タイムスタンプのメソッドをオーバーライドすることになった、現地時間でレガシーのActiveRecordのモデルを読み込み、保存する必要があります。私は自分のタイムスタンプモジュールを書きました。これは、現地時間にデータを読み込んで保存する必要のあるモデルに含まれていました。

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 
関連する問題