При использовании метода new() для источника данных DBIx :: Class ResultSource для создания (потенциально временной) переменной он, похоже, не заполняет атрибуты значениями по умолчанию, указанными в схеме DBIC (которые мы указали для создания таблиц из этой схемы).Perl DBIx :: Class - Значения по умолчанию при использовании new()?
В настоящее время мы создаем одно значение по умолчанию для одного такого класса (первый случай, когда это было проблемой) с
sub new {
my $class = shift;
my $self = $class->next::method(@_);
$self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
return $self;
}
в этом классе (то есть, очередь атрибут => DEFAULT_QUEUE_VAL). Однако в долгосрочной перспективе у нас есть несколько классов DBIC, которые имеют разные значения по умолчанию, и мы бы хотели избежать повторения описанной выше логики для всех различных случаев.
Доступны ли модули CPAN/плагины для этого? Мы не видели в нашем (по общему признанию, беглого) поиска CPAN.
Редактировать: исправлено некоторое количество мусора в образце кода; оказывается, я cp'd из устаревшего кода.
Стоит отметить, что любая техника такого рода будет разорвана, если ваше значение по умолчанию не является простым значением (например, это вызов функции SQL). Если это возможно, рекомендуется просто вставить строку в базу данных (возможно, внутри транзакции для обеспечения безопасности) и запросить значение столбца. Делайте то, что вы просите, если эта техника не работает. – hobbs