Hey, Kein Rails noob, aber das hat mich ratlos. Mit hat viele durch Assoziationen in Rails. Wenn ich Weine einer Weinbar über einen Weinlistenverband (oder durch einen Tisch) mit etwas ähnlichem zuweise.has_many durch Wegblasen der Assoziation Metadaten über Massenassoziation
class WineBarController
def update
@winebar = WineBar.find(params[:id])
@winebar.wines = Wine.find(params[:wine_bar][:wine_ids].split(",")) // Mass assign wines.
render (@winebar.update_attributes(params[:wine_bar]) ? :update_success : :update_failure)
end
end
Dadurch wird jede mit dieser Weinbar verknüpfte Weinlistenzeile gelöscht. Dann findet es alle Weine in wine_ids, von denen wir annehmen, dass es eine durch Komma getrennte Reihe von Weiniden ist. Dann fügt es wieder eine neue Assoziation in die Weinliste ein. Dies wäre zwar teuer, aber in Ordnung, wenn die zerstörten Assoziationszeilen keine Metadaten wie den Preis pro Glas und Flasche für die einzelnen Weinbars enthielten.
Gibt es einen Weg, es nicht alles wegblasen zu lassen, nur einen aufzählbaren Vergleich der Arrays und Einfügen löschen, was auch immer sich ändert. Ich habe das Gefühl, dass Schienen etwas sind und ich vermisse etwas Offensichtliches.
Danke.
danke für Ihre Antwort, aber das funktioniert nicht. Das Feld wine_ids ist keine verschachtelte Form. es ist eine Schnur. Meine UI passt nicht gut zu der verschachtelten Formularkonvention. Ich habe mein Beispiel aktualisiert, um ein Update zu sein. Duh. Es ist jedoch noch ein zusätzlicher Schritt erforderlich, um die Wein-IDs abzufragen und sie dann mit der Weinbar in Verbindung zu bringen. –
Hallo Lawrence - Ich habe meine Antwort aktualisiert, lass es mich wissen, wenn es hilft. –