Moose-Methodenmodifikatoren für DBIx :: Class :: Schema-Modelle in Catalyst

9

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?

    
nebulous 07.12.2010, 14:28
quelle

1 Antwort

1

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!

    
KateYoak 09.12.2011 18:03
quelle

Tags und Links