También puedes hacer lo siguiente:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Tiendo a usar la solución anterior cuando quiero verificar más de uno o dos parámetros.
.values_at devuelve y matriz con nil en lugar de cualquier clave de parámetro indefinida. es decir:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
devolverá lo siguiente:
[3,nil,5]
.incluye? (nil) luego verifica la matriz para cualquier valor nulo. Volverá verdadero si la matriz incluye nil.
En algunos casos, es posible que también desee comprobar que los parámetros no contienen una cadena vacía en un valor falso.
Puede manejar esos valores agregando el siguiente código encima de la declaración a menos que.
params.delete_if{|key,value| value.blank?}
todos juntos se vería así:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Es importante tener en cuenta que delete_if modificará sus hash / params, así que úselo con precaución.
La solución anterior claramente requiere un poco más de trabajo para configurar, pero vale la pena si está comprobando más de uno o dos parámetros.
params
es un método de controlador Rails (que resulta que devuelve un HashWithIndifferentAccess), se trata de Rails.