Perl DBIx :: Class - 使用new()时的默认值?

Car*_*arl 5 perl dbix-class

当使用在DBIx ::类ResultSource新()方法创建一个(可能是暂时的)变量,它似乎并没有填充在DBIC模式中指定的默认值的属性(这是我们创建从表中指定模式).

目前,我们正在为一个这样的类创建一个默认值(第一种情况,这是一个问题)

sub new {
  my $class = shift;
  my $self = $class->next::method(@_);
  $self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
  return $self;
}
Run Code Online (Sandbox Code Playgroud)

在该类中(即属性queue => DEFAULT_QUEUE_VAL).然而,长期来看,我们有不同的默认值几个DBIC类,我们想避免复制上述逻辑所有的各类案件.

有没有可用的CPAN模块/插件?我们没有看到任何我们(粗略地粗略地)搜索CPAN.

编辑:修复代码示例中的一些垃圾; 结果我从过时的代码中获取了cp'd.

cas*_*way 2

看起来没有用于此目的的 DBIC 组件,但您可以通过对现有代码进行小修改来实现:

sub new {
  my $class = shift;
  my $self = $class->next::method(@_);
  foreach my $col ($self->result_source->columns) {
    my $default = $self->result_source->column_info($col)->{default_value};
    $self->$col($default) if($default && !defined $self->$col());
  return $self;
}
Run Code Online (Sandbox Code Playgroud)

由于它如此简单,因此组件没有太多意义。