Richtiger Weg, verschachtelte Felder in Rails-Formularen zu initialisieren

8

Ich würde gerne wissen, was die "richtige" Art ist, die verschachtelten Felder eines Modells zu initialisieren.

Nehmen wir an, Sie haben einige verschachtelte Felder für ein Modell:

%Vor%

Und Sie müssen diese Attribute initialisieren ( address in diesem Fall), um sie in einem fields_for Aufruf zu verwenden.

Bisher habe ich über drei Möglichkeiten nachgedacht.

Erstens, after_initialize Haken am Modell:

%Vor%

Dann haben wir Initialisierung in der Steuerung:

%Vor%

Und schließlich können wir eine Hilfsmethode für uns haben:

%Vor%

Gibt es etwas, das einem Standard oder einer "Best Practice" für dieses Szenario ähnelt? Wie machst du es und warum?

    
Federico Builes 09.12.2011, 23:43
quelle

2 Antworten

2

Ich denke, wenn das verschachtelte Attribut ohne das übergeordnete Modell überhaupt keinen Sinn ergibt, sollte das Erstellen und Initialisieren dieser verschachtelten Modelle in der Verantwortung des übergeordneten Modells liegen.

Ich verstehe nicht, warum UsersController darauf achten sollte, wie die @user.addresses erstellt oder initialisiert werden. Wenn ich dem Controller diese Verantwortung gebe, würde das wahrscheinlich bedeuten, dass er auf create derjenige sein sollte, der die verschachtelten Attribute analysiert und aufgebaut hat (was im Modell passiert).

Ich würde für den ersten Ansatz gehen.

    
Hock 10.12.2011 03:07
quelle
0

Ich glaube, dass build_address bereits in Rails eingebaut ist, nachdem Sie eine has_one-Verknüpfung deklariert haben, so dass Sie diesen Bit nicht selbst schreiben müssen. und wenn das Formular nur von der neuen Aktion aufgerufen wird, brauchen Sie nur das Controller-Bit und sonst nichts

    
Shuo Chen 09.12.2011 23:52
quelle