2011-01-31 13 views
6

私はそうのような触媒で私のモデルを作成するためにCatalystDBIx::Class::Schema::Loaderを使用しています:DBIx :: Class :: Schema :: Loaderが自動的にInflateColumn :: DateTimeをCatalystに追加しないようにするにはどうすればよいですか?

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=のリストをそれにプッシュします。

  1. File a bugオプション -

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

    、。

  2. dbicdumpで行います。

これは、あなたが

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

更新をIT-をラップする

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

そして単なるモデルwanted-何する必要があります:あなたの例では、それを使用していないようpreserve_caseを取り出しましたまた、モデルやスキーマクラスにパスワードを入れてはならないというベストプラクティスについても言及したいと思います。設定する必要があります。mysqlのようなものを使用する場合は、権限が制限されたDB固有の設定ファイルから読み込むように設定する必要があります。

+1

こんにちはアシュリー、それは私が恐れていたことです、コードの助けもヘルパーも見つかりましたが、周りに道があるかどうかは分かりませんでした。私はdbicdumpの方法で行くつもりです。スキーマを手作業でダンプする小さなperlヘルパーを書きました。悪くない。これを見ていただきありがとうございます。 –

関連する問題