DBIx :: Class包装/重载列访问器

时间:2012-07-17 16:38:22

标签: perl accessor catalyst dbix-class

使用DBIx :: Class我正在尝试在更新或检索列时操纵列的数据。例如,在进入数据库之前,我想加密它,无论何时访问它,我都想解密它。我在DBIx::Class::Manual::Cookbook中关注此示例,但我似乎无法使其工作。我已将以下内容放在我的用户架构中。为了测试我只是使用名称列,我知道它没有意义:

__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;
}

我无法看到我所做的与烹饪书所说的不同。谁也不能帮我理解我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

DBIx :: Class有一个名为FilterColumn的组件。

CPAN上有各种模块使用DBIx::Class::EncodedColumnPassphraseColumn等组件。

如果你告诉我们你使用的是什么案例,我们可能会给你更多/更好的建议。