J'ai un code assez fréquent dans notre contrôleur pour gérer des paramètres de liste blanche et désinfectante:Comment `require` paramètres non seulement pour être présent, mais pour être un hachage avec des paramètres de chaîne dans Rails?
def create
@sign_in = SignIn.new(sign_in_params)
# ...
end
def sign_in_params
params.require(:user).permit(:email, :password)
end
Ceci, cependant, soulève une exception sur les params suivantes:
{
"user": "foobar"
}
La raison est que params[:user]
est présent , mais qu'il ne retourne pas un autre Hash, mais plutôt une chaîne. Causer une exception: NoMethodError: undefined method
permet 'for "foorbar": String`.
Comment puis-je non seulement m'assurer que require
nécessite la présence d'un paramètre, mais exige également qu'il soit un hachage? Conformément à la documentation de strong_parameters, il est possible d'appeler les méthodes plusieurs fois.
Solution parfaite! Dommage que je perde ainsi la concision du one-liner, mais c'est logique, et c'est un petit compromis. – berkes