2012-07-13 12 views
6

के माध्यम से एक स्तंभ जोड़ना कैसे आप टर्मिनल के माध्यम से ActiveRecord का उपयोग कर एक तालिका में एक कॉलम में शामिल कर सकता। मैं add_column विधि का उपयोग करने की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है। कोई विचार कृपया?टर्मिनल

+0

आप किस डेटाबेस का उपयोग कर रहे हैं? – cdesrosiers

+1

रेल के डिफ़ॉल्ट का उपयोग कर माइग्रेशन –

+0

Im लिखना बेहतर है, जो कि अगर मैं गलत नहीं हूं, तो SQLite है ... हालांकि, इससे कोई फर्क नहीं पड़ता क्योंकि मैं ActiveRecord का उपयोग करके SQL कोड को सारणित कर रहा हूं। मैंने एक खाता मॉडल बनाया और एक ईमेल फ़ील्डनाम डालने के लिए भूल गया और इसे जोड़ना चाहता हूं ... – Sweebo

उत्तर

8

माइग्रेशन लिखना बेहतर है और यदि आप किसी टीम के साथ काम कर रहे हैं तो जरूरी है। जब आप डीबी परिवर्तन करते हैं, तो प्रत्येक डेवलपर के पर्यावरण को भी अद्यतन किया जाना चाहिए। अन्यथा, आप पर कुछ पागल डेवलपर होंगे।

rails generate migration AddPartNumberToProducts part_number:string 

class AddPartNumberToProducts < ActiveRecord::Migration 
    def change 
    add_column :products, :part_number, :string 
    end 
end 

उत्पन्न होगा तो फिर तुम माइग्रेशन चला

rake db:migrate 

http://guides.rubyonrails.org/migrations.html

संपादित करें:

एक रेल सांत्वना कमांड लाइन की जांच @ tadman के जवाब के लिए 0

या क्या Bengala

तरह प्रस्तावित का उपयोग
ActiveRecord::Migration.add_column :products, :part_number, :string 
+0

Thx। उत्पाद मॉडल के संबंध में, मुझे लगता है कि आपको नए कॉलम को मैन्युअल रूप से पूरा करने के लिए एक्सेसर जोड़ना होगा? रेल स्वचालित रूप से मॉडल को संपादित नहीं करेंगे? – Sweebo

+0

@Sweebo, सही –

+0

आप सवाल – Bengala

3

यदि आप बस चारों ओर हैकिंग कर रहे हैं, तो आमतौर पर रेल डीबी परत के माध्यम से किसी प्रकार के SQLite क्लाइंट का उपयोग करके डेटाबेस में हेरफेर करना आसान होता है।

यदि आप किसी प्रोजेक्ट के लिए ऐसा कर रहे हैं, तो उचित माइग्रेशन फ़ाइल बनाएं और इसे चलाएं।

यदि आप ऐसा करने के लिए दृढ़ हैं, तो add_column विधि ActiveRecord::Base.connection ड्राइवर ऑब्जेक्ट के माध्यम से उपलब्ध है।

8

आप ActiveRecord::Migration

साथ रेल सांत्वना rails c में सीधे माइग्रेशन चला सकते हैं अपने उद्देश्य के लिए अगले आदेश क्या करेंगे आप पूछें:

> ActiveRecord::Migration.add_column :table_name, :field_name, :field_type 
+0

का जवाब नहीं दिया इस के लिए धन्यवाद। बेशक, लगभग हर समय माइग्रेशन लिखना बेहतर होता है। लेकिन _sever_, आप जानते हैं कि आप क्या कर रहे हैं और बस एक बदलाव सीधे चलाना चाहते हैं :) – FeifanZ

+0

हां, लेकिन उन्होंने माइग्रेशन कैसे करना है, उन्होंने पूछा कि टर्मिनल के माध्यम से कॉलम कैसे जोड़ना है। और मुझे लगता है कि यह उचित जवाब है। – Bengala