Sie können auch Folgendes tun:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Ich neige dazu, die obige Lösung zu verwenden, wenn ich mehr als ein oder zwei Parameter überprüfen möchte.
.values_at gibt ein Array mit nil anstelle eines undefinierten Parameterschlüssels zurück. dh:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
wird folgendes zurückgeben:
[3,nil,5]
.includes? (nil) überprüft dann das Array auf Nullwerte. Es wird true zurückgegeben, wenn das Array nil enthält.
In einigen Fällen möchten Sie möglicherweise auch überprüfen, ob Parameter keine leere Zeichenfolge für einen falschen Wert enthalten.
Sie können mit diesen Werten umgehen, indem Sie den folgenden Code über der if-Anweisung hinzufügen.
params.delete_if{|key,value| value.blank?}
Alles in allem würde es so aussehen:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Es ist wichtig zu beachten, dass delete_if Ihre Hash / Parameter ändert. Verwenden Sie sie daher mit Vorsicht.
Die obige Lösung erfordert eindeutig etwas mehr Arbeit beim Einrichten, lohnt sich jedoch, wenn Sie mehr als nur ein oder zwei Parameter überprüfen.
params
um eine Rails-Controller-Methode handelt (die zufällig einen HashWithIndifferentAccess zurückgibt), handelt es sich um Rails.