2013-03-15 11 views
5

में टाइमस्टैम्प कैसे सम्मिलित करें मैंने अभी आरओआर के साथ शुरुआत की है और एक प्रश्न है: मैं मॉडल में वर्तमान टाइमस्टैम्प (या किसी भी प्रकार का समय) कैसे डाल सकता हूं? नीचे आप लॉग फ़ंक्शन बनाते हैं।रेल डेटाबेस डेटाबेस-कॉलम

def create 
    @log = Log.new(params[:log]) 

    respond_to do |format| 
     if @log.save 
     format.html { redirect_to @log, notice: 'Log was successfully created.' } 
     format.json { render json: @log, status: :created, location: @log } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @log.errors, status: :unprocessable_entity } 
     end 
    end 
    end 
+0

क्या आपने रेल जनरेटर का उपयोग करके मॉडल बनाया था? –

उत्तर

18

रेल मॉडल जनरेटर स्वचालित रूप से आप के लिए डेटाबेस में created_at और updated_atdatetime क्षेत्रों पैदा करता है। जब रिकॉर्ड क्रमशः बनाया या अद्यतन किया जाता है तो ये फ़ील्ड स्वचालित रूप से अपडेट होते हैं।

यदि आप मैन्युअल रूप से टाइमस्टैम्प बनाना चाहते हैं, तो डेटाबेस में डेटाटाइम कॉलम (उदा। timestamp_field) जोड़ें और अपने मॉडल में before_save कॉलबैक का उपयोग करें।

class Log < ActiveRecord::Base 
    before_save :generate_timestamp 

    def generate_timestamp 
    self.timestamp_field = DateTime.now 
    end 
end 
+0

लेकिन मैं टाइमस्टैम्प डालेंगे। – venumaer

+0

मैंने मैन्युअल टाइमस्टैम्प के उदाहरण के साथ उत्तर अपडेट किया। –

+0

क्या आपको 'self.timestamp_field = DateTime.now' लिखने की आवश्यकता नहीं है? –

2

रेल का उपयोग करते हुए, उदा, rails generate model Log रेल आप के लिए दो टाइमस्टैम्प क्षेत्रों स्वचालित रूप से बनाता जनरेटर।

created_at और updated_at इन क्षेत्रों रेल द्वारा भरा जाएगा जब तुम तो Log.new कर ऑन द रिकॉर्ड save या Log.createupdated_at क्षेत्र एक नया रिकॉर्ड बनाने के दोनों ही अद्यतन हो जाता है जब आप रिकॉर्ड की विशेषताओं को अपडेट करने या जब आप विधि का उपयोग touch मॉडल के एक उदाहरण पर।

अब, अगर आप टाइमस्टैम्प प्रकार के साथ एक और क्षेत्र बनाने के लिए एक प्रवास है कि इस

rails generate migration add_some_timestamp_field_to_logs my_timestamp_field:timestamp 

यह उस माइग्रेशन को my_timestamp_field नाम के एक स्तंभ जोड़ देगा उत्पन्न होगा की तरह अपने मॉडल के लिए एक कॉलम जोड़ने पर कर सकता है चाहता था timestamp प्रकार के साथ, created_at और updated_at

संबंधित मुद्दे