Al usar el método new() en un DBIx :: Class ResultSource para crear una variable (potencialmente temporal), no parece llenar los atributos con los valores predeterminados especificados en el esquema DBIC (que hemos especificado para crear tablas de ese esquema).Perl DBIx :: Class - Valores predeterminados cuando se usa new()?
Actualmente, estamos creando un valor por defecto para una tal clase (el primer caso en el que esto era un problema) con
sub new {
my $class = shift;
my $self = $class->next::method(@_);
$self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
return $self;
}
en esa clase (es decir, la cola de atributo => DEFAULT_QUEUE_VAL). Sin embargo, a más largo plazo, tenemos varias clases de DBIC que tienen varios valores predeterminados, y nos gustaría evitar la replicación de la lógica anterior para todos los casos.
¿Hay módulos/complementos de CPAN disponibles para hacer esto? No vimos ninguno en nuestra búsqueda (evidentemente somera) de CPAN.
Editar: corrigió algunos desperdicios en el ejemplo del código; Resulta que copié de un código desactualizado.
Vale la pena señalar que cualquier técnica de este tipo se romperá si su valor predeterminado no es un valor simple (por ejemplo, es una llamada de función SQL). Si es posible, se recomienda que simplemente inserte la fila en la base de datos (posiblemente dentro de una transacción por seguridad) y vuelva a consultar el valor de la columna. Solo haz lo que estás preguntando si esa técnica no funciona. – hobbs