2011-11-24 14 views
5

मेरे पास इन कॉलम के साथ एक मौजूदा मॉडल (और तालिका) है: id, name, city। इस तालिका में डेटा है और मैं इस तालिका को कॉलम created_at और updated_at जोड़ना चाहता हूं - क्या कोई मुझे मदद दे सकता है, इसे कैसे करें? मेरा मतलब है - अगर मैं एक मॉडल बनाता हूं, तो ये दो कॉलम स्वचालित रूप से बनाए जाते हैं और जब मैं वहां कुछ सहेजता हूं, तो समय सूचनाएं हमेशा स्वचालित रूप से डाली जाती हैं।रेल - मॉडल में टाइमस्टैम्प कैसे जोड़ें?

अब इन दो कॉलम को स्वचालित सम्मिलित समय-डेटा के साथ जोड़ना संभव है?

+0

तो आप एक मौजूदा मॉडल है कि आप चाहते हैं की है टाइमस्टैम्प जोड़ने के लिए? आप रेल का किस संस्करण का उपयोग कर रहे हैं? –

+0

रेल सक्रियणकॉर्ड स्वचालित रूप से टाइमस्टैम्प कॉलम बनाता है, आप अपना टाइमस्टैम्प कॉलम क्यों जोड़ना चाहते हैं? – megas

+0

@megas, उन्होंने उन्हें अपने शुरुआती माइग्रेशन –

उत्तर

13

यह आपको पहले से मौजूद मॉडल

rails generate migration add_timestamps_to_users 

यह करने के लिए टाइमस्टैम्प स्तंभ जोड़ने के लिए एक प्रवास फ़ाइल पैदा करेगा अनुमति चाहिए। इसे खोलने के ऊपर और आवश्यक परिवर्तन

बनाने
class AddTimestampsToUsers < ActiveRecord::Migration 
    # in my example i'm using `users` table; change this to match your table name 
    def change_table :users do |t| 
    t.timestamps 
    end 
end 

फिर अपने डेटाबेस विस्थापित

rake db:migrate 
+0

अच्छे उत्तर से हटा दिया होगा, यह भी ध्यान रखना अच्छा होगा कि आप संशोधित मॉडल के नाम से मेल खाने के लिए कमांड को संशोधित करना चाहते हैं। –

+0

यह समाधान डेटा युक्त तालिका पर लागू नहीं है, क्योंकि नए बनाए गए कॉलम में डिफ़ॉल्ट मान होना चाहिए और "टाइमस्टैम्प" वाक्यविन्यास उन्हें निर्दिष्ट करने की अनुमति नहीं देता है। – Paul

+1

पॉल, आप पूर्व-मौजूदा रिकॉर्ड के लिए दिनांक/समय मान कैसे बना सकते हैं? मुझे लगता है कि टाइमस्टैम्प कॉलम मौजूद होने से पहले बनाए गए रिकॉर्ड के लिए 'शून्य' मान पर्याप्त हैं। –

12

ऐसा लगता है कि जब तक Macek के जवाब सही मूल में है, वह माइग्रेशन के लिए सही सिंटैक्स का उपयोग नहीं करता ("परिवर्तन" विधि भूल गए)।

यह आपको पहले से मौजूद मॉडल

rake generate migration add_timestamps_to_users 

यह आप के लिए एक प्रवास फ़ाइल पैदा करेगा करने के लिए टाइमस्टैम्प स्तंभ जोड़ने के लिए अनुमति चाहिए:

तो यहाँ ठीक किया वाक्य रचना के साथ अपने जवाब है। इसे खोलने के ऊपर और आवश्यक परिवर्तन

बनाने
class AddTimestampsToModel < ActiveRecord::Migration 
    # in my example i'm using `users` table; change this to match your table name 
    def change 
    change_table :users do |t| 
     t.timestamps 
    end 
    end 
end 

फिर अपने डेटाबेस विस्थापित

rake db:migrate 
4

add_timestamps इस उद्देश्य के लिए एक समर्पित विधि है:

class AddTimestampsToUsers < ActiveRecord::Migration 
    def change 
    add_timestamps :users 
    end 
end 
संबंधित मुद्दे