2015-05-12 10 views
6

ho bisogno per consentire un parametro in Rails 4, che ha un punto nel suo nome:Rails forti params con "punto" in nome

mio params hash si presenta come la seguente:

{ 
    "dictionary_objects.id" => [ 
    "102", "110", "106" 
    ] 
} 

posso ottenere il valore param:

>> params['dictionary_objects.id'] 
=> [ 
[0] "102", 
[1] "110", 
[2] "106" 
] 

Ma quando provo a permetterlo, restituisce un hash vuoto:

>> params.permit('dictionary_objects.id') 
Unpermitted parameters: dictionary_objects.id 
=> {} 

Qualcuno sa come posso consentire param con un punto nel suo nome?

Grazie.

risposta

6

Penso che sia semplicemente impossibile autorizzarlo perché hai una collezione e stai dicendo di consentire un parametro a valore singolo. Se si utilizza:

params.permit(:'dictionary_objects.id' => []) 

quindi tutto dovrebbe andare bene.

+0

Non posso che approvare la maniera convenzionale :) – apneadiving

+0

Funziona, grazie per il suggerimento! – roody

2

per i casi limite vi consiglio una soluzione molto utile:

params.slice('dictionary_objects.id').permit! 

in modo da fare le chiavi della white list e non lo diventano folle a causa di forti params.


sidenote:

rotaie è incorporato per ricevere args come dictionary_object_ids per has_many relazioni, si potrebbe sfruttare questo invece.