Tous les exemples de paramètres forts dans Rails 4 docs utilisent
params.require(:person).permit(:name, :age)
Quelqu'un pourrait-il s'il vous plaît déconstruire et expliquer ce qui se passe avec require
et permit
ici?
La variable params
dans un contrôleur ressemble à un hachage, mais il s’agit en fait d’une instance de ActionController::Parameters
, qui fournit plusieurs méthodes telles que require
et permit
.
La méthode require
s'assure de la présence d'un paramètre spécifique. S'il n'est pas fourni, la méthode require
lève une erreur. Il retourne une instance de ActionController::Parameters
pour la clé passée dans require
.
La méthode permit
renvoie une copie de l'objet de paramètres, en ne renvoyant que les clés et les valeurs autorisées. Lors de la création d'un modèle ActiveRecord, seuls les attributs autorisés sont transmis au modèle.
Cela ressemble beaucoup à la liste blanche qui était auparavant incluse dans les modèles ActiveRecord, mais il est plus logique que ce soit dans le contrôleur.
Pour être plus précis, lorsque vous créez par exemple. Pour .new(...)
, il doit y avoir :person
hash indiqué par require et la personne hash acceptera seulement :name
et :age
indiqués par permis.
Exemple:
.new(person: { name: "Bhojendra", age: 32 }) // okay
.new(person: { name: "Rauniyar" }) // okay
.new(person: { name: "Bhojendra", other: 'asdf' }) // not okay
.new(person: { full_name: "Bhojendra Rauniyar" }) // not okay
.new(detail: { name: "Bhojendra", age: 32 }) // not okay, must be person