2010-07-14 15 views
6

मेरे पास एक डेटाबेस है जो गैर-रेल अनुप्रयोग द्वारा लिखा गया है और रेल अनुप्रयोग से पढ़ा गया है। डेटाबेस में एक डेटाटाइम फ़ील्ड है और इस क्षेत्र में संग्रहीत डेटा पूर्वी समय में संग्रहीत किया जाता है। मेरे रेल ऐप में, मैं समझता हूं कि मैं config.time_zone = 'Eastern Time (US & Canada)' कर अपने पर्यावरण.आरबी फ़ाइल में एप्लिकेशन का टाइमज़ोन सेट कर सकता हूं। हालांकि, रेल मानते हैं कि डेटाबेस में संग्रहीत डेटा यूटीसी में संग्रहीत होता है और config.time_zone से यूटीसी में परिवर्तित होता है क्योंकि यह डेटाबेस में और बाहर जानकारी खींचता है।रेल/एक्टिव्रेकॉर्ड डेटाबेस फ़ील्ड टाइमज़ोन

क्या इस विशेष क्षेत्र में डेटा को रेल करने के लिए कोई तरीका है, या यहां तक ​​कि मेरे सभी डेटाटाइम फ़ील्ड, पूर्वी समय है और यूटीसी नहीं है?

उत्तर

0

मेरा पहला सुझाव अन्य एप्लिकेशन को ठीक करना है। अन्य आवेदन तिथि के साथ एक यूटीसी ऑफसेट भंडारण किया जाना चाहिए। यदि आप किसी समस्या के आसपास काम करने का प्रयास करते हैं, तो आप और अधिक बनाने जा रहे हैं। उदाहरण के लिए, क्या होता है जब डेलाइट बचत समय जाता है, तो ऑफसेट बदलने जा रहे हैं?

कहा और कोई अन्य विकल्प होने जा रहा है - मैं इन पंक्तियों के साथ कुछ करना चाहते हैं, एक क्षेत्र created_at के लिए:

def created_at_in_eastern 
    DateTime.parse(self.created_at.strftime("%D %T EST")) if self.created_at 
end 

या आप कैसे डेटा सहेजा जाता के आधार पर EDT उपयोग कर सकते हैं, बस अस्वीकरण को पढ़ शीर्ष पर - यह एक हैक है!

1

config.active_record.default_timezone - निर्दिष्ट समय क्षेत्र में होने के रूप में डेटाबेस बार व्याख्या करने के लिए, और created_at & updated_at विशेषताओं के साथ काम करने के लिए इस समय क्षेत्र का उपयोग करने के ActiveRecord कहता है।

8

रेल 3.0.5 application.rb में, यह काम करता है:

config.time_zone = 'Central Time (US & Canada)' 
config.active_record.default_timezone = :local 
संबंधित मुद्दे