2011-12-26 14 views
19

बनाते समय रेल में कॉलम में डिफ़ॉल्ट मान कैसे सेट करें, मैं रेल में मॉडल के लिए नया हूं। मुझे पता है कि मॉडल & उन्हें कॉलम कैसे जोड़ें। अब मैं एक कॉलम पर डिफ़ॉल्ट मान सेट करना चाहता हूं लेकिन मुझे यह नहीं मिल रहा है कि मैं इसे कैसे कर सकता हूं।माइग्रेशन

मैं नए मॉडल इसे करने के लिए

rails g model User 

तो जोड़ा स्तंभ उत्पन्न

rails generate migration AddNotificationEmailToUsers notification_email:boolean 

अब मैं सच अधिसूचना स्तंभ डिफ़ॉल्ट का मान सेट करना चाहते हैं। कृपया मुझे मार्गदर्शन करें कि इसके लिए माइग्रेशन कैसे लिखें। धन्यवाद!!!

उत्तर

44

आप कमांड लाइन से ऐसा नहीं कर सकते - आप माइग्रेशन फ़ाइल को संपादित और

add_column :users, :notification_email, :boolean, :default => true 
+0

धन्यवाद, कि मुझे –

2

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

add_column :users, :notification_email, :boolean, :default => true 
+0

मदद की हे लोग यह मेरे लिए काम नहीं कर रहा है कि वहाँ की तरह रेल ग्राम प्रवास AddDefaultsToTablename कोई भी माइग्रेशन है: Tablename,: columnName: डिफ़ॉल्ट मूल्य? –

+0

नहीं, इसके लिए कोई सीधा तरीका नहीं है, यह माइग्रेशन फ़ाइल में काम करना चाहिए जो उत्पन्न हो जाता है, आपको क्या त्रुटि मिल रही है? – PriteshJ

13

आपके प्रवास में change_column का उपयोग करने का सर्वोत्तम तरीका यहां है। इसे बदलने के लिए विज्ञापित किया जाता है लेकिन आप इसे मौजूदा कॉलम में डिफ़ॉल्ट संलग्न करने के लिए उपयोग कर सकते हैं।

मैं स्कीमा में

location :integer 

थी और मैं शून्य करने के लिए डिफ़ॉल्ट करना चाहता था, इसलिए मैं इस तरह के रूप माइग्रेशन लिखा है:

change_column :player_states, :location, :integer, :default => 0 

कि चाल किया था।

0

अभी तक रेल माइग्रेशन में टर्मिनल के माध्यम से परिभाषित डिफ़ॉल्ट मान निर्दिष्ट करने के लिए कोई रास्ता नहीं है।

आप एक स्तंभ

1) के लिए डिफ़ॉल्ट मान निर्दिष्ट करने के लिए नीचे दिए गए चरणों पर अमल कर सकते हैं।

$ rails generate migration AddNotificationEmailToUsers notification_email:boolean 

2) निष्पादित करें। बनाई गई नई माइग्रेशन फ़ाइल को संपादित करके TRUE/FALSE पर नया कॉलम डिफ़ॉल्ट मान निर्दिष्ट करें।

class AddNotificationEmailToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :notification_email, :boolean, default: true 
    end 
end 

3) निष्पादन द्वारा उत्पन्न माइग्रेशन के ऊपर।

$ rake db:migrate 
संबंधित मुद्दे