Hier sind einige Unterschiede zwischen nil?
, blank?
und present?
:
Beachten Sie, dass present?
in not nil and not blank
übersetzt wird. Beachten Sie außerdem, dass nil?
zwar von Ruby bereitgestellt wird, aber blank?
und present?
von Rails bereitgestellte Helfer sind.
Also, welchen soll man wählen? Es hängt natürlich davon ab, was Sie wollen, aber wenn Sie params [: some_value] auswerten, wollen Sie normalerweise nicht nur überprüfen, dass es nicht null ist, sondern auch, ob es eine leere Zeichenfolge ist. Beide sind durch present?
abgedeckt.
Die relevanten Fälle sind:
nil
für den Schlüssel ""
) oder das leere Array ( []
) für den Schlüssel Verwenden Sie je nachdem, wo Sie die Linie zeichnen möchten, die entsprechende Methode.
!param.key?(:some_value)
param[:some_value].nil?
param[:some_value].blank?
param.key?(:some_value)
param[:some_value]
param[:some_value].present?
if param[:some_value]
ist am häufigsten.
Aber wenn Sie mit booleschen Daten ( true
, false
) arbeiten, ist dies die beste Methode
wäre if !param[:some_value].nil?
, weil:
( !!
gibt den booleschen Wert zurück, der in einer if-Anweisung getestet würde)
Es könnte auch wichtig sein, zu testen, ob der Wert wirklich null ist oder ob die Schlüssel / Wert-Kombination nicht definiert ist. key?(key)
macht das für dich.
Es hängt davon ab, was Sie tun möchten, aber ich verwende normalerweise diese Formulare:
%Vor% Natürlich funktionieren alle nur, wenn der Parameter nicht false
sein kann. In diesem Fall würde ich nach der unless param[:some_value].nil?
Version gehen.
Tags und Links ruby ruby-on-rails-3.2