3

DBIx::Class を使用して、列のデータが更新または取得されるたびに、列のデータを操作しようとしています。たとえば、データベースに入る前に暗号化し、アクセスされるたびに復号化したいと考えています。私はDBIx::Class::Manual::Cookbookでこの例に従っていますが、うまく動作しないようです。User スキーマに以下を配置しました。テストのために、名前列を使用しているだけですが、意味がないことはわかっています。

__PACKAGE__->add_columns("name" => { accessor => '_name' });

sub name {
    my $self = shift;

    # If there is an update to the column, we'll let the original accessor
    # deal with it.
    if(@_) {
        return $self->_name('test 1');
    }

    # Fetch the column value.
    my $name = $self->_name;
    $name = 'test 2';
    return $name;
}

自分がやっていることは、クックブックに書かれていることとまったく違うことがわかりません。私が間違っていることを誰かが理解するのを手伝ってくれませんか? ありがとう!

4

1 に答える 1

1

DBIx::Class には FilterColumn と呼ばれるコンポーネントがあります

DBIx::Class::EncodedColumnPassphraseColumnなど、そのコンポーネントを使用する CPAN にはさまざまなモジュールがあります。

ユースケースを教えていただければ、より多くの/より良い提案をするかもしれません。

于 2012-08-10T12:18:00.317 に答える