Ayrıca aşağıdakileri de yapabilirsiniz:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Bir veya iki parametreden daha fazlasını kontrol etmek istediğimde yukarıdaki çözümü kullanma eğilimindeyim.
.values_at, herhangi bir tanımsız param anahtarının yerine nil ile dizi ve diziyi döndürür. yani:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
aşağıdakileri döndürür:
[3,nil,5]
.includes? (nil) sonra diziyi herhangi bir nil değeri olup olmadığını denetler. Dizi nil içeren true döndürecektir.
Bazı durumlarda, parametrelerin false değerinde dize içermediğini ve boş dize olmadığını da kontrol etmek isteyebilirsiniz.
Unless ifadesinin üstüne aşağıdaki kodu ekleyerek bu değerleri işleyebilirsiniz.
params.delete_if{|key,value| value.blank?}
hep birlikte şöyle görünecektir:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Delete_if öğesinin karma / parametrelerinizi değiştireceğini unutmayın, bu nedenle dikkatli kullanın.
Yukarıdaki çözüm, kurulumu biraz daha fazla zaman alır, ancak sadece bir veya iki parametrenin ardından kontrol ediyorsanız buna değer.
params
bir Rails denetleyici yöntemi (HashWithIndifferentAccess döndüren) olduğu göz önüne alındığında, Rails ile ilgilidir.