Tutti gli esempi di parametri forti utilizzati nei documenti di Rails 4
params.require(:person).permit(:name, :age)
Qualcuno potrebbe per favore decostruire e spiegare cosa sta succedendo requiree permitqui?
Tutti gli esempi di parametri forti utilizzati nei documenti di Rails 4
params.require(:person).permit(:name, :age)
Qualcuno potrebbe per favore decostruire e spiegare cosa sta succedendo requiree permitqui?
Risposte:
In paramsun controller sembra un hash, ma in realtà è un'istanza di ActionController::Parameters, che fornisce diversi metodi come requiree permit.
Il requiremetodo garantisce la presenza di un parametro specifico e, se non viene fornito, requiregenera un errore. Restituisce un'istanza di ActionController::Parametersper la chiave passata require.
Il permitmetodo restituisce una copia dell'oggetto parametri, restituendo solo le chiavi e i valori consentiti. Quando si crea un nuovo modello ActiveRecord, nel modello vengono passati solo gli attributi consentiti.
Assomiglia molto alla whitelisting precedentemente inclusa nei modelli ActiveRecord, ma ha più senso che sia nel controller.
trueil permitted?metodo. Per impostazione predefinita, un'istanza della ActionController::Parametersclasse tornerà falseper permitted?Risposta trueper permitted?indicare che l'oggetto parametro può essere utilizzato nell'assegnazione di massa; altrimenti l'app genererà un errore ForbiddenAttributes.
permitsu requireanche permettere e includere i parametri richiesti nel oggetto restituito?
Per essere più precisi, quando crei per es. facendo .new(...), ci deve essere l' :personhash indicato da request e l'hash della persona accetterà :namee :ageindicato solo dal permesso.
Esempio:
.new(person: { name: "Bhojendra", age: 32 }) // okay
.new(person: { name: "Rauniyar" }) // okay
.new(person: { name: "Bhojendra", other: 'asdf' }) // not okay, other not permitted
.new(person: { full_name: "Bhojendra Rauniyar" }) // not okay, full_name not permitted
.new(detail: { name: "Bhojendra", age: 32 }) // not okay, must be person
not okayesempio?
permitma nonrequire.