Invio una serie di ID di associazione, ad esempio foo_ids
al mio controller. Per consentire un array di valori, io uso:Rails - Parametri resistenti con array vuoti
params.permit(foo_ids: [])
Ora, il problema è che se io mando un array vuoto di foo_ids
, il parametro viene ignorato. Invece di cancellare tutto il foos
come dovrebbe fare una matrice vuota, l'associazione è lasciata in pace, perché foo_ids
non è permesso.
Questo può essere dovuto al fatto che an empty array is converted to nil in rails e che il valore nullo viene ignorato poiché i parametri forti cercano una matrice di valori scalari, non un singolo valore scalare.
Qualcuno può suggerire un buon modo per risolvere questo? Grazie!
Ulteriori informazioni
In un azione di controllo aggiornamento, ho bisogno di essere in grado di gestire due casi. Devo essere in grado di impostare foo_ids
su un array vuoto. Devo anche essere in grado di ignorare foo_ids
se voglio semplicemente aggiornare un altro campo. Impostare foo_ids
su un array vuoto se nil non funziona per questo secondo caso.
Stavo considerando una patch scimmia before_filter dove vorrei fare qualcosa per risolvere questo per tutte le chiavi che terminano in "_ids" . pensieri? – futbolpal
Funzionerebbe. Avevo alcuni casi in cui dovevo farlo per i parametri nidificati negli hash, quindi potresti volerli gestire anche a seconda del tuo utilizzo. –