Vous pouvez également effectuer les opérations suivantes:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
J'ai tendance à utiliser la solution ci-dessus lorsque je veux vérifier plus d'un ou deux paramètres.
.values_at renvoie un tableau avec nil à la place de toute clé de paramètre non définie. c'est à dire:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
renverra ce qui suit:
[3,nil,5]
.includes? (nil) vérifie alors le tableau pour toutes les valeurs nil. Il retournera true si le tableau inclut nil.
Dans certains cas, vous pouvez également vérifier que les paramètres ne contiennent pas de chaîne vide sur une valeur fausse.
Vous pouvez gérer ces valeurs en ajoutant le code suivant au-dessus de l'instruction sauf.
params.delete_if{|key,value| value.blank?}
tous ensemble, cela ressemblerait à ceci:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Il est important de noter que delete_if modifiera votre hachage / paramètres, utilisez donc avec prudence.
La solution ci-dessus demande clairement un peu plus de travail à mettre en place, mais en vaut la peine si vous vérifiez plus d'un ou deux paramètres.
params
s'agit d'une méthode de contrôleur Rails (qui retourne un HashWithIndifferentAccess), il s'agit de Rails.