2009-11-17 11 views
13

के दौरान schema.rb से एक तालिका को रखें earlier question about not reloading a huge, persistent table when I run my tests पर फॉलो-ऑन के रूप में, जब मैं अपने माइग्रेशन चलाता हूं तो मुझे इस तालिका को schema.rb से बाहर रखने की आवश्यकता होती है। यह तालिका सीधे एक mysqldump से लोड हो जाती है, इसलिए मैं इसका ट्रैक रखने के बारे में चिंतित नहीं हूं।माइग्रेशन

तो, मैं schema.rb से एक विशिष्ट तालिका कैसे रख सकता हूं?

उत्तर

29

बाहर बदल जाता है वहाँ एक विकल्प है सिर्फ इस स्थिति के लिए!

मैं activerecord-2.3.4/lib/active_record/schema_dumper.rb में यह पाया:

## 
# :singleton-method: 
# A list of tables which should not be dumped to the schema. 
# Acceptable values are strings as well as regexp. 
# This setting is only used if ActiveRecord::Base.schema_format == :ruby 
cattr_accessor :ignore_tables 
@@ignore_tables = [] 

तो सब मैं करना था environment.rb के अंत में इस छड़ी किया गया था:

ActiveRecord::SchemaDumper.ignore_tables = ["table_name"] 

ignore_tables विकल्प नियमित अभिव्यक्ति को स्वीकार करेंगे। उदाहरण के लिए, "एमएस 'के साथ शुरू सभी तालिकाओं की अनदेखी करने के:

ActiveRecord::SchemaDumper.ignore_tables = [/^MS/] 
0

मुझे लगता है कि यदि आप अपने माइग्रेशन फ़ोल्डर से तालिका उत्पन्न करने के लिए माइग्रेशन रखते हैं, तो यह नहीं चल पाएगा, और बदले में इसका उपयोग विकास डेटाबेस उत्पन्न करने के लिए नहीं किया जाएगा, जिसे इसे बाहर रखना चाहिए schema.rb।

आप शायद कि एकल प्रवास को चलाने के लिए अगर आप रेक कार्य के बाहर की जरूरत है किसी तरह (बस कनेक्शन स्थापित किया जाना चाहिए और फिर माइग्रेशन वर्ग पर चल रहा है) पता लगा सकते हैं

+0

तो माइग्रेशन एक प्रवास से सभी तालिकाओं कि schema.rb में डेटाबेस में हैं डाल दिया जाएगा, की जाए या नहीं वे बनाए गए थे परवाह किए बिना। सौभाग्य से, मुझे इसे रोकने का विकल्प मिला! – Tarek

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