9

आरओआर माइग्रेशन में, मैं गैर-प्राथमिक-कुंजी फ़ील्ड को ऑटो कैसे बढ़ा सकता हूं? मैं इसे डीबी परिभाषा में करना चाहता हूं, न कि मॉडल में।रेल पर रूबी में ऑटो गैर-प्राथमिक कुंजी फ़ील्ड

उत्तर

9

आपको एक SQL कथन निष्पादित करने की आवश्यकता है।

statement = "ALTER TABLE `users` CHANGE `id` `id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT" 
ActiveRecord::Base.connection.execute(statement) 

आप अपने प्रवास में

नोट प्रविष्टि मैन्युअल रूप से कर सकते हैं यह सिर्फ एक उदाहरण है। अंतिम SQL कथन वाक्यविन्यास डेटाबेस पर निर्भर करता है।

+1

क्या मैं आपके उत्तर से यह मानने में सही हूं कि रेल एसक्यूएल स्टेटमेंट के प्रत्यक्ष निष्पादन के बिना ऐसा करने का कोई तरीका नहीं प्रदान करता है? मैं कुछ ऐसा उम्मीद करूंगा: 't.integer: auto_i,: auto_increment => true' काम करने के लिए (लेकिन यह नहीं)। – kingjeffrey

+3

हाँ रेल प्रदान नहीं करते हैं: माइग्रेशन में auto_increment कीवर्ड – user386660

+0

और यदि आप रेल में सभी कीवर्ड या अन्य अच्छी चीजें चाहते हैं। "आरओआर के लिए रूबिमाइन आईडीई" इतना उपयोगी होगा। मैं पिछले 6 महीनों से उपयोग कर रहा हूं। – user386660

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