Alle Beispiele für starke Parameter in Rails 4-Dokumenten werden verwendet
params.require(:person).permit(:name, :age)
Könnte jemand bitte dekonstruieren und erklären, was mit require
und permit
hier passiert?
ruby-on-rails-4
Erik Trautman
quelle
quelle
permit
aber nichtrequire
.Antworten:
Das
params
in einem Controller sieht aus wie ein Hash, ist aber tatsächlich eine Instanz vonActionController::Parameters
, die verschiedene Methoden wierequire
und bereitstelltpermit
.Die
require
Methode stellt sicher, dass ein bestimmter Parameter vorhanden ist. Wenn dieser nicht angegeben wird, gibt dierequire
Methode einen Fehler aus. Es gibt eine Instanz vonActionController::Parameters
für den übergebenen Schlüssel zurückrequire
.Die
permit
Methode gibt eine Kopie des Parameterobjekts zurück und gibt nur die zulässigen Schlüssel und Werte zurück. Beim Erstellen eines neuen ActiveRecord-Modells werden nur die zulässigen Attribute an das Modell übergeben.Es sieht der Whitelist sehr ähnlich, die früher in ActiveRecord-Modellen enthalten war, aber es ist sinnvoller, sie im Controller zu haben.
quelle
true
derpermitted?
Methode. Standardmäßig gibt eine Instanz derActionController::Parameters
Klassefalse
für "permitted?
Antwortentrue
auf" zurück, waspermitted?
bedeutet, dass das Parameterobjekt für die Massenzuweisung verwendet werden kann. Andernfalls gibt die App einen ForbiddenAttributes-Fehler aus.permit
aufrequire
auch die erforderlichen Parameter in der zurückgegebene Objekt ermöglichen und beinhalten?Genauer gesagt, wenn Sie z. Dabei
.new(...)
muss ein:person
Hash durch "Anfordern" angegeben werden, und der Hash der Person wird nur durch Erlaubnis akzeptiert:name
und:age
angezeigt.Beispiel:
quelle
not okay
visualisieren das 3. und 4. Beispiel?