2017-01-14 11 views
2

私はこのなぜDBIx列が収縮していないのですか?

__PACKAGE__->inflate_column(request => { inflate => sub{ die }, deflate => sub{ die } }); 

ようInflateColumnを定義している。しかし、私は、この列にデータを保存しようとすると、それは問題なく保存されています。

$schema->resultset('Table')->create({ 
    request => 'value' 
}); 

なぜ​​が呼び出されないのですか?

答えて

2

deflatevalueが配列リファレンスまたはハッシュリファレンス

$schema->resultset('Table')->create({ 
    request => [ 'value' ] 
}); 

UPDDOC

である場合には、スカラー参照以外の参考文献のすべてのタイプを処理すると呼ばれます。スカラー値は扱われません。これらは無視され、SQL :: Abstractに渡されます。これは生の値を「うまくいく」ように設定することです。スカラー参照はデータベースに渡され、\ 'year + 1'と\ 'DEFAULT'などの設定を有効にします。

にスカラー値をフィルタリングして別のものに置き換えたい場合を参照してください(DBIx::Class::FilterColumnを参照)。

+2

InflateColumnドキュメントの状態:スカラー参照を除くすべてのタイプの参照を処理します。 –