Puoi anche fare quanto segue:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Tendo a utilizzare la soluzione di cui sopra quando voglio controllare più di uno o due parametri.
.values_at restituisce e array con zero al posto di qualsiasi chiave param non definita. vale a dire:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
restituirà quanto segue:
[3,nil,5]
.includes? (zero) quindi controlla l'array per eventuali valori nulli. Restituirà vero se l'array include zero.
In alcuni casi potresti anche voler verificare che i parametri non contengano e svuotino la stringa con un valore falso.
È possibile gestire tali valori aggiungendo il seguente codice sopra l'istruzione
params.delete_if{|key,value| value.blank?}
tutti insieme sembrerebbe così:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
È importante notare che delete_if modificherà il tuo hash / params, quindi usa con cautela.
La soluzione sopra richiede chiaramente un po 'più di lavoro per la configurazione, ma ne vale la pena se stai controllando più di uno o due parametri.
params
tratta di un metodo controller Rails (che succede per restituire un HashWithIndifferentAccess), si tratta di Rails.