2011-02-20 7 views
19

कल्पना कीजिए कि मेरे पास एक पोस्ट मॉडल है। डेटाबेस मेंडेटाबेस में कच्चे 'made_at' मान को कैसे प्राप्त करें (किसी ऑब्जेक्ट को ActiveSupport :: TimeWithZone पर नहीं डाला गया)

और एक रिकॉर्ड होगा:

23|title_here|content_here|2011-02-20 08:01:55.583222|2011-02-20 08:01:55.583222 

और पिछले दो क्षेत्र (2011-02-20 08:01:55.583222|2011-02-20 08:01:55.583222) created_at और updated_at क्षेत्र हैं।

फिर,

post = Post.find_by_id(23) 

प्रश्न: "2011-02-20 08:01:55.583222" डेटा बेस में: मैं created_at स्ट्रिंग कैसे मिल सकता है?

जैसा कि हम जानते हैं, post.created_at कच्चे स्ट्रिंग पर ActiveSupport::TimeWithZone ऑब्जेक्ट वापस नहीं करेगा।

मदद कृपया :)

+0

आप 'पोस्ट.फिंड (23) ' – Besi

उत्तर

29

उपयोग attributes_before_type_cast

Post.find(23).attributes_before_type_cast["created_at"] 

या

Post.find(23).read_attribute_before_type_cast("created_at") 

संपादित

आप यह भी तरह कॉल कर सकते हैं:

Post.find(23).created_at_before_type_cast 

Accessing attributes before they have been typecasted लिंक के अनुसार।

+2

पहला समाधान रीडिंग डेटा के साथ भी काम करता है जो – morgoth

+1

क्रमबद्ध है, वहां आप 5 अंक @rubyprince –

+0

धन्यवाद @ फिलिप को बधाई देते हैं। वाह!!! – rubyprince

0

प्रयास करें

Post.find_by_id(23).created_at.to_s 
+0

पर ढूंढ कॉल को सरल बना सकते हैं यह इस तरह कुछ प्राप्त करेगा:" 2011-02-12 09:10:32 यूटीसी "। लेकिन मैं क्या चाहता हूं "2011-02-20 08: 01: 55.583222" चुड़ैल में मिलीसेकंद जानकारी है। – Croplio

+0

rubyprince का सही जवाब है। – jemminger