2011-01-31 13 views
6

मैं बहुत तरह उत्प्रेरक में मेरे मॉडल बनाने के लिए Catalyst और DBIx::Class::Schema::Loader उपयोग कर रहा हूँ:मैं डीबीआईएक्स :: कक्षा :: स्कीमा :: लोडर को इन्फ्लैट कॉलम :: स्वचालित रूप से उत्प्रेरक में डेटटाइम जोड़ने से कैसे रोकूं?

script/myapp_create.pl model DB DBIC::Schema MyApp::Schema create=static overwrite_modifications=1 components=EncodedColumn dbi:mysql:mydb mydb pass 

दुर्भाग्य लोडर स्वचालित रूप से InflateColumn::DateTime एक डिफ़ॉल्ट घटक, है जो मैं नहीं चाहता के रूप में सेट करता है। मैं डेटाबेस से कच्चे मूल्य चाहता हूँ।

__PACKAGE__->load_components("InflateColumn::DateTime", "EncodedColumn"); 

क्या कोई मुझे बता सकता है कि इसे कैसे रोकें?

उत्तर

6

मैन, जो कष्टप्रद है। ऐसा लगता है कि आप जो चाहते हैं उसे प्राप्त करना संभव नहीं है।

_build_loader_componentsCatalyst::Helper::Model::DBIC::Schema में यह तब तक जोड़ता है जब तक आपके पास कोई नामस्थान नहीं है और कोई परिणाम नामस्थान नहीं है। यह उस पर आपकी अतिरिक्त component= सूची को धक्का देता है।

my @components = $self->old_schema && (not $use_namespaces) ?() 
    : ('InflateColumn::DateTime');         

तो,

  1. File a bug विकल्प-।
  2. dbicdump के साथ ऐसा करें।

यह होना चाहिए कि आप क्या

dbicdump -o dump_directory=./lib \ 
    -o components='["EncodedColumn"]' \ 
    -o use_namespaces=1 \ 
    -o overwrite_modifications=1 \ 
    MyApp::Schema dbi:mysql:foo user pass 

और फिर सादे मॉडल चाहता था है- रैप करने के लिए

script/myapp_create.pl model DB DBIC::Schema MyApp::Schema 

अद्यतन: preserve_case बाहर लिया अपने उदाहरण के रूप में उपयोग नहीं किया और मैं सर्वोत्तम प्रथाओं के लिए उल्लेख करना चाहता हूं कि पासवर्ड मॉडल या स्कीमा कक्षाओं में नहीं होना चाहिए। यह कॉन्फ़िगरेशन में होना चाहिए और यदि आप ऐसा कुछ उपयोग कर रहे हैं जो इसे mysql की तरह अनुमति देता है, तो इसे एक विशेषाधिकार प्रतिबंधित डीबी विशिष्ट कॉन्फ़िगरेशन फ़ाइल से पढ़ने के लिए कॉन्फ़िगर किया जाना चाहिए।

+1

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