Tous les exemples de paramètres forts de la documentation Rails 4 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?
ruby-on-rails-4
Erik Trautman
la source
la source
permit
mais pasrequire
.Réponses:
Le
params
dans un contrôleur ressemble à un Hash, mais c'est en fait une instance deActionController::Parameters
, qui fournit plusieurs méthodes telles querequire
etpermit
.La
require
méthode garantit qu'un paramètre spécifique est présent et, s'il n'est pas fourni, larequire
méthode renvoie une erreur. Il renvoie une instance deActionController::Parameters
pour la clé transmiserequire
.La
permit
méthode renvoie une copie de l'objet de paramètres, retournant uniquement les clés et valeurs autorisées. Lors de la création d'un nouveau 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 qu'elle soit dans le contrôleur.
la source
true
à lapermitted?
méthode. Par défaut, une instance de laActionController::Parameters
classe retournerafalse
pourpermitted?
Répondretrue
àpermitted?
signifie que l'objet paramètre peut être utilisé dans l'affectation en masse; sinon, l'application lancera une erreur ForbiddenAttributes.permit
surrequire
permettre également et inclure les paramètres requis dans l'objet retourné?Pour être plus précis, lorsque vous créez par exemple. En faisant
.new(...)
, il doit y avoir un:person
hash indiqué par require et la personne hash n'acceptera:name
et sera:age
indiqué que par permit.Exemple:
la source
not okay
visualisent les 3e et 4e exemples?