Quando si utilizza il metodo new() su DBIx :: Class ResultSource per creare una variabile (potenzialmente temporanea), non sembra popolare gli attributi con i valori predefiniti specificati nello schema DBIC (che abbiamo specificato per la creazione di tabelle da quello schema).Perl DBIx :: Class - Valori predefiniti quando si utilizza new()?
Attualmente, stiamo creando un valore predefinito per una tale classe (primo caso in cui questo è stato un problema) con
sub new {
my $class = shift;
my $self = $class->next::method(@_);
$self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
return $self;
}
in quella classe (cioè, la coda attributo => DEFAULT_QUEUE_VAL). Tuttavia, a lungo termine, abbiamo diverse classi DBIC che hanno vari valori predefiniti, e vorremmo evitare di replicare la logica sopra per tutti i vari casi.
Ci sono moduli/plug-in CPAN disponibili per farlo? Non abbiamo visto nessuno nella nostra (dichiaratamente superficiale) ricerca di CPAN.
Modifica: corretto alcuni dati inutili nel codice di esempio; risulta che cp'd da codice scaduto.
Vale la pena notare che qualsiasi tecnica di questo tipo verrà interrotta se il valore predefinito non è un valore semplice (ad esempio è una chiamata di funzione SQL). Se possibile, si consiglia di inserire la riga nel database (possibilmente all'interno di una transazione per sicurezza) e interrogare il valore della colonna. Fai solo ciò che ti chiedi se quella tecnica non funziona. – hobbs