J'ai une méthode create qui construit un nouveau modèle via une association et je m'attendais à ce qu'elle retourne une réponse 400 avec du texte si aucun paramètre n'était dans la demande POST. Cependant, j'obtiens une erreur .
C'est dans Rails 4.0.2
méthodes du contrôleur:
def create
@cast_profile = current_user.build_cast_profile(cast_profile_params)
if @cast_profile.save
redirect_to cast_profile_path
else
render :edit
end
end
def cast_profile_params
params.require(:cast_profile).permit(:name, :email, :public)
end
Si je passe les paramètres, tout va bien, mais j'essaie de tester le mauvais scénario de demande. Voici l'erreur:
ActionController::ParameterMissing: param not found: cast_profile
Je pouvais le sauver explicitement mais je pensais que des paramètres forts étaient censés le faire automatiquement.
Le comportement est le suivant:
Traitement des clés non autorisées
Par défaut, les clés de paramètres qui ne sont pas explicitement autorisées seront enregistrées dans l'environnement de développement et de test. Dans d'autres environnements, ces paramètres seront simplement filtrés et ignorés.
En outre, ce comportement peut être modifié en modifiant la propriété config.action_controller.action_on_unpermitted_parameters dans vos fichiers d'environnement. S'il est défini sur: journal, les attributs non autorisés seront enregistrés, s'il est défini sur: lever une exception sera levée.
( source )
Je suggère de sauver de cette exception avec le statut 400 (mauvaise demande):
rescue_from ActionController::ParameterMissing do
render :nothing => true, :status => :bad_request
end