12

के बाद कॉलम जोड़ें, मैंने तालिका में किसी विशिष्ट कॉलम के बाद तालिका में कॉलम जोड़ने का प्रयास किया। यहाँ मैं क्या किया है:रेल पर रूबी एक विशिष्ट कॉलम नाम

class AddReactionIdToPatientAllergies < ActiveRecord::Migration 
    def change 
    add_column :patient_allergies, :reaction_id, :string 
    add_column :patient_allergies, :integer, :string 
    add_column :patient_allergies, :, :after 
    add_column :patient_allergies, :=, :string 
    end 
end 

मुझे लगता है कि आदेश में अच्छी तरह से चला गया न:

rails generate migration add_reaction_id_to_patient_allergies reaction_id: integer :after => 'patient_id' 

यहाँ क्या मेरी माइग्रेशन फ़ाइल की तरह लग रहा है। मैं उपरोक्त फ़ाइल में '=' ​​देखता हूं। मुझे नहीं लगता कि यह वहां होना चाहिए। क्या कोई मुझे बता सकता है कि मुझे कुछ याद आया?

यदि हां, तो मैं उपरोक्त को पूर्ववत कैसे करूं?

उत्तर

38

मुझे संदेह है कि यह आपको वास्तव में rake db:migrate इस माइग्रेशन की अनुमति देता है, इसलिए आपको वापस रोल नहीं करना चाहिए। बस नीचे तीन add_column रों हटाने और

add_column :patient_allergies, :reaction_id, :integer, after: :patient_id 

के साथ शीर्ष एक की जगह है और इसे स्थानांतरित करने के लिए ठीक होना चाहिए।

rails generate migration add_reaction_id_to_patient_allergies reaction_id:integer 

अंतरिक्ष integer से पहले किए गए जनरेटर लगता है कि यह एक नया स्तंभ था: भविष्य में संदर्भ के लिए, यहाँ क्या है कि आदेश आपके द्वारा दर्ज दिखना चाहिए की तरह है। अफसोस की बात है कि आप कमांड लाइन पर रूबी सिंटैक्स (a => b) का उपयोग नहीं कर सकते हैं।

+1

@ माइकल इस सफल उत्तर में एक और चीज़ जोड़ने के लिए, एक सफल लेकिन अवांछित माइग्रेशन को पूर्ववत करने के लिए आप रेक डीबी कर सकते हैं: रोलबैक - यह सबसे हालिया माइग्रेशन को उलट देता है। आप इसे दोहराकर आगे बढ़ सकते हैं। मैं अक्सर छोटे बदलाव करने के लिए पूर्ववत करता हूं, जैसे कि डिफ़ॉल्ट मान या कॉलम ऑर्डर – Polsonby

+3

सेट करना ': बाद' विकल्प [API दस्तावेज़] में शामिल नहीं दिखता है (http://api.rubyonrails.org/classes /ActiveRecord/Migration.html), कम से कम रेल 4.2.3 के लिए। कोशिश करने के बाद पता चला: माइग्रेशन ठीक हो गया लेकिन ऑर्डरिंग लागू नहीं हुई थी। – nandinga

+0

@ नंदिंग यह नवीनतम रेल में अभी भी [कॉलमडिफिनिशन] (https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L13) वर्ग जैसा दिखता है 'बाद के विकल्प', हालांकि मैंने रेल की आखिरी कुछ रिलीज पर इसका परीक्षण नहीं किया है। – piersadrian

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