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 require
e permit
qui?
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 require
e permit
qui?
Risposte:
In params
un controller sembra un hash, ma in realtà è un'istanza di ActionController::Parameters
, che fornisce diversi metodi come require
e permit
.
Il require
metodo garantisce la presenza di un parametro specifico e, se non viene fornito, require
genera un errore. Restituisce un'istanza di ActionController::Parameters
per la chiave passata require
.
Il permit
metodo 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.
true
il permitted?
metodo. Per impostazione predefinita, un'istanza della ActionController::Parameters
classe tornerà false
per permitted?
Risposta true
per permitted?
indicare che l'oggetto parametro può essere utilizzato nell'assegnazione di massa; altrimenti l'app genererà un errore ForbiddenAttributes.
permit
su require
anche permettere e includere i parametri richiesti nel oggetto restituito?
Per essere più precisi, quando crei per es. facendo .new(...)
, ci deve essere l' :person
hash indicato da request e l'hash della persona accetterà :name
e :age
indicato 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 okay
esempio?
permit
ma nonrequire
.