Podczas korzystania z metody new() w obiekcie wynikowym źródła danych DBIx :: Class do utworzenia (potencjalnie tymczasowej) zmiennej, wydaje się, że nie wypełnia ona atrybutów wartościami domyślnymi określonymi w schemacie DBIC (który określono dla tworzenia tabel z tego schematu).Perl DBIx :: Class - wartości domyślne przy użyciu new()?
Obecnie tworzenia jednej wartości domyślnej dla jednego z tych kategorii (to pierwszy przypadek, gdy jest to problem) z
sub new {
my $class = shift;
my $self = $class->next::method(@_);
$self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
return $self;
}
w tej klasie (np kolejka atrybut => DEFAULT_QUEUE_VAL). Jednak w dłuższej perspektywie mamy kilka klas DBIC, które mają różne wartości domyślne, i chcielibyśmy uniknąć replikacji powyższej logiki dla wszystkich różnych przypadków.
Czy są dostępne jakieś moduły/wtyczki CPAN? Nie widzieliśmy żadnego w naszych (wprawdzie pobieżnych) poszukiwaniach CPAN.
Edytuj: poprawiono niektóre śmieci w próbce kodu; okazuje się, że kupiłem z nieaktualnego kodu.
Warto zauważyć, że jakakolwiek technika tego rodzaju zostanie przerwana, jeśli domyślna wartość nie jest prostą wartością (np. Jest to wywołanie funkcji SQL). Jeśli to możliwe, zaleca się wstawienie wiersza do bazy danych (prawdopodobnie w ramach transakcji dla bezpieczeństwa) i zapytanie o wartość kolumny. Rób to, o co pytasz, jeśli ta technika nie działa. – hobbs