Für jede angegebene Ergebnisklasse MySchema :: Result :: Foo (wird vom Standard-Schema-Loader generiert Syntax, die Moose / MooseX :: nonmoose) verwendet
Wenn ich einen BUILDARGS-Methodenwrapper hinzufüge, um die Konstruktordaten für eine Zeile wie folgt zu bereinigen:
%Vor%Dies funktioniert, wenn das Schema direkt verwendet wird. Zum Beispiel funktioniert das Folgende wie erwartet: Ein neues Zeilenobjekt wird erstellt mit real_column = & gt; 'value' und not_a_real_column entfernt, bevor - & gt; new heißt
%Vor%Wenn Sie jedoch das gleiche Schema über Catalyst :: Model :: DBIC :: Schema verwenden, lautet die Reihenfolge anders. Folgendes schlägt fehl, wenn versucht wird, ein neues Foo-Zeilenobjekt zu erstellen not_a_real_column ist ungültig. Mit anderen Worten, die Argumente zu new werden nicht durch BUILDARGS ausgeführt, bevor - & gt; new heißt.
%Vor%Interessanterweise, wenn ich 'neu' umblättere = & gt; sub {} anstelle von 'BUILDARGS' = & gt; sub {} das Verhalten ist in beiden Fällen das gleiche und funktioniert gut, aber nach meinem Verständnis sagt Elch-Dogma, sich niemals mit neuen Dingen zu beschäftigen.
Wer möchte mir helfen zu verstehen, warum das der Fall ist oder ob es einen besseren Weg gibt?
Ich sehe, Sie verwenden MooseX :: NonMoose.
Gegeben, ich vermute, dass Sie FOREIGNBUILDARGS
verwenden müssen %Vor% "MooseX :: NonMoose ermöglicht es Ihnen, die Argumentliste zu bearbeiten, die an den Superklassenkonstruktor übergeben wird, indem Sie eine FOREIGNBUILDARGS-Methode definieren."
Ссылка
Ich hoffe wirklich, das funktioniert für Sie!
Tags und Links perl moose catalyst dbix-class