Ich sende ein Array von Assoziations-IDs, sagen foo_ids
zu meinem Controller. Um ein Array von Werten zu ermöglichen, die ich benutze:Schienen - Starke Parameter mit leeren Arrays
params.permit(foo_ids: [])
Nun, das Problem ist, dass wenn ich ein leeres Array von foo_ids
senden, wird der Parameter ignoriert. Anstatt alle foos
als leeres Array zu löschen, wird die Verknüpfung nicht ausgeführt, da foo_ids
nicht zulässig ist.
Dies kann sein, weil an empty array is converted to nil in rails, und dass Nullwert ignoriert wird, da starke Parameter nach einem Array von skalaren Werten suchen, nicht nach einem einzelnen Skalarwert.
Kann jemand einen guten Weg vorschlagen, um das zu lösen? Vielen Dank!
Zusatzinfo
In einem Update Controller-Aktion muss ich in der Lage sein, zwei Fälle zu behandeln. Ich muss in der Lage sein, foo_ids
zu einem leeren Array zu setzen. Ich muss auch foo_ids
ignorieren können, wenn ich nur ein anderes Feld aktualisieren möchte. Setzen Sie foo_ids
auf ein leeres Array, wenn nil für diesen zweiten Fall nicht funktioniert.
i erwäge einen Affen-Patch before_filter, wo ich etwas tun, würde dies für alle Schlüssel zu adressieren, die in "_ids" beenden . Gedanken? – futbolpal
Das würde funktionieren. Ich hatte ein paar Fälle, in denen ich dies für in Hashes verschachtelte Params tun musste, so dass Sie diese abhängig von Ihrer Verwendung auch behandeln könnten. –