Você também pode fazer o seguinte:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Costumo usar a solução acima quando quiser verificar mais de um ou dois parâmetros.
.values_at retorna e matriz com zero no lugar de qualquer chave param indefinida. ou seja:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
retornará o seguinte:
[3,nil,5]
.includes? (nil), em seguida, verifica se há valores nulos na matriz. Retornará true se o array incluir nulo.
Em alguns casos, você também pode querer verificar se os parâmetros não contêm e esvaziam a string com valor falso.
Você pode manipular esses valores adicionando o código a seguir acima da instrução salvo.
params.delete_if{|key,value| value.blank?}
todos juntos ficaria assim:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
É importante observar que delete_if modificará seus hash / parâmetros, portanto, use com cuidado.
A solução acima claramente requer um pouco mais de trabalho para configurar, mas vale a pena se você estiver verificando mais do que apenas um ou dois parâmetros.
params
é um método do controlador Rails (que retorna um HashWithIndifferentAccess), trata-se de Rails.