2011-01-31 12 views
6

Sto usando Catalyst e DBIx::Class::Schema::Loader di creare il mio modello Catalyst in questo modo:Come impedire a DBIx :: Class :: Schema :: Loader di aggiungere automaticamente InflateColumn :: DateTime in Catalyst?

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

Purtroppo il caricatore imposta automaticamente InflateColumn::DateTime come componente di default, che io non voglio. Voglio il valore grezzo dal database.

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

Qualcuno può dirmi come impedirlo?

risposta

6

L'uomo è fastidioso. Sembra che non sia possibile ottenere quello che vuoi così com'è.

_build_loader_components in Catalyst::Helper::Model::DBIC::Schema aggiunge a meno che non si disponga di spazi dei nomi e nessun spazio dei nomi dei risultati. Spinge la tua lista extra component= su quello.

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

Quindi, Opzioni-

  1. File a bug.
  2. Fallo con dbicdump.

Questo dovrebbe essere quello che volevamo-

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

E poi solo il modello di pianura per avvolgere it-

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

Aggiornamento: Tirò fuori preserve_case come tuo esempio non usarlo e mi piacerebbe menzionare per il bene delle migliori pratiche che la password non dovrebbe essere nel modello o nelle classi dello schema. Dovrebbe essere in configurazione e se si sta utilizzando qualcosa che lo consente, come mysql, dovrebbe essere configurato per essere letto da un file di configurazione specifico del DB con privilegi limitati.

+1

Ciao Ashley, questo è quello che temevo, ho trovato anche quel pezzo di codice, ma non ero sicuro che ci fosse un modo per aggirarlo. Andrò alla maniera dbicdump. Ho appena scritto un piccolo helper perl che scarica manualmente lo schema. Non male. Grazie per aver esaminato questo. –

Problemi correlati