Mai mult
Șine 4 - Puternic Parametri - Obiecte Imbricate
Am'am o întrebare destul de simplă. Dar am't a găsit o soluție până acum.
Deci, aici's JSON string-am trimite la server:
{
"name" : "abc",
"groundtruth" : {
"type" : "Point",
"coordinates" : [ 2.4, 6 ]
}
}
Folosind noul permis de metoda, am'am:
params.require(:measurement).permit(:name, :groundtruth)
Acest lucru aruncă nici o eroare, dar a creat baza de date de intrare conține null
în loc de groundtruth valoare.
Daca am stabilit:
params.require(:measurement).permit!
Totul's-a salvat cum era de așteptat, dar, desigur, aceasta ucide securitate oferite de puternic parametri.
Am'am găsit soluții, cum de a permis tablouri, dar nu un singur exemplu, folosind obiecte imbricate. Acest lucru trebuie să fie posibil într-un fel, deoarece acesta ar trebui să fie destul de un caz de utilizare comună. Deci, cum funcționează?
134
4
La fel de ciudat ar suna, atunci când doriți să permiteți imbricate atribute specificați atributele de obiecte imbricate într-o matrice. În cazul tău ar fi
Update cum a sugerat de către @RafaelOliveira
Pe de altă parte, dacă vrei imbricate de mai multe obiecte, apoi înfășurați-o într-un hash... astfel de prognoze
Șine de fapt destul de bine de documentare pe aceasta: http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit
Pentru clarificări suplimentare, te-ai putea uita la punerea în aplicare a "permis" și
strong_parameters
în sine: https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/strong_parameters.rb#L246-L247Am găsit această sugestie utilă în cazul meu:
Verifica asta link de Xavier's comentariu pe github.
Această abordare liste albe întreaga params[:măsurarea][:groundtruth] obiect.
Folosind întrebări originale atribute:
Permite un obiect imbricate :
Dacă este Șine 5, pentru că de noi hash notație:
params.permis(:numele, groundtruth: [:tip, coordonate:[]])
va funcționa bine.