2009-01-05 9 views
43

मैं एक मॉडल रूबी स्क्रिप्ट/मॉडल अनुच्छेद (सरल enuff) उत्पन्नजब मैं रेक चलाएँ: db विस्थापित आदेश मैं एक त्रुटि "शुरू नहीं किए गए लगातार CreateArticles" मिल

यहाँ माइग्रेशन फ़ाइल create_articles.rb है बनाया:

def self.up 
    create_table :articles do |t| 
    t.column :user_id, :integer 
    t.column :title, :string 
    t.column :synopsis, :text, :limit => 1000 
    t.column :body, :text, :limit => 20000 
    t.column :published, :boolean, :default => false 
    t.column :created_at, :datetime 
    t.column :updated_at, :datetime 
    t.column :published_at, :datetime 
    t.column :category_id, :integer 
    end 

def self.down 
    drop_table :articles 
end 
end 

जब मैं रेक चलाता हूं: डीबी माइग्रेट कमांड मुझे एक त्रुटि रेक छोड़ दिया जाता है! "अनियमित निरंतर CreateArticles।"

क्या किसी को पता है कि यह त्रुटि क्यों चल रही है?

+0

आपकी माइग्रेशन फ़ाइल का नाम क्या है और आपकी कक्षा घोषणा किस तरह दिखती है? – thetacom

+0

2000106022023_create_articles.rb (माइग्रेशन फ़ाइल) ^ यह उपर्युक्त (वर्ग घोषणा) – featureBlend

+0

जैसा नहीं होगा, आपकी कक्षा घोषणा उपर्युक्त सभी को संलग्न करनी चाहिए और ऐसा कुछ दिखाना चाहिए: क्लास CreateMyModel thetacom

उत्तर

91

करें कि आपकी फ़ाइल नाम और वर्ग के नाम का कहना है कि एक ही बात (वर्ग के नाम को छोड़कर ऊंट मामलों है) अपना माइग्रेशन फ़ाइल की व्याप्ति सामग्री कुछ इस तरह देखना चाहिए रहो, उन्हें सरल बनाया एक सा भी:

#20090106022023_create_articles.rb 
class CreateArticles < ActiveRecord::Migration 
    def self.up 
    create_table :articles do |t| 
     t.belongs_to :user, :category 
     t.string :title 
     t.text :synopsis, :limit => 1000 
     t.text :body, :limit => 20000 
     t.boolean :published, :default => false 
     t.datetime :published_at 
     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :articles 
    end 
end 
+0

धन्यवाद थैटाकॉम !!!! तुम दा आदमी दोस्त। मैं कितना बेवकूफ हो सकता हूँ? – featureBlend

+5

हम सभी के पास हमारे क्षण हैं। – thetacom

+0

बहुत सारे 'अंत' - लेकिन फिर मूल पेस्ट – Gareth

2

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

class SomeClass < ActiveRecord::Base; end 

अब यह प्रवास के भीतर SomeClass उपयोग करने के लिए संभव हो जाना चाहिए।

0

यदि आपकी कक्षा के नाम config/initializers/inflections.rb से इन्फ्लिक्शन (जैसे शब्दकोष) से ​​मेल नहीं खाते हैं तो दी गई त्रुटि प्राप्त करना संभव है।

उदाहरण के लिए, यदि आपके inflections में शामिल हैं:

ActiveSupport::Inflector.inflections(:en) do |inflect| 
    inflect.acronym 'DOG' 
end 

तो आप अपने प्रवास में यकीन है कि वर्ग बनाने के लिए आवश्यकता हो सकती है है:

class CreateDOGHouses < ActiveRecord::Migration[5.0]

बजाय

:

class CreateDogHouses < ActiveRecord::Migration[5.0]

बहुत आम नहीं है, लेकिन यदि आप माइग्रेशन या मॉडल या कुछ उत्पन्न करते हैं, और उसके बाद इसके बाद भाग में बदलाव हो सकते हैं। (यहां उदाहरण NameError: uninitialized constant CreateDOGHouses का कारण होगा यदि आपकी कक्षा का नाम CreateDogHouses है, कम से कम रेल के साथ 5.)

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