Uważaj na inne odpowiedzi przedstawiające present?odpowiedź na Twoje pytanie.
present?jest przeciwieństwem blank?w szynach.
present?sprawdza, czy istnieje znacząca wartość. Te rzeczy mogą się nie udać present?:
"".present?
" ".present?
[].present?
false.present?
YourActiveRecordModel.where("false = true").present?
Natomiast !nil?czek daje:
!"".nil?
!" ".nil?
![].nil?
!false.nil?
!YourActiveRecordModel.where("false = true").nil?
nil?sprawdza, czy obiekt jest rzeczywiście nil. Coś jeszcze: pusty ciąg 0, falseniezależnie, nie jest nil.
present?jest bardzo przydatne, ale zdecydowanie nie jest przeciwieństwem nil?. Mylenie tych dwóch może prowadzić do nieoczekiwanych błędów.
Twój przypadek użycia present?zadziała, ale zawsze dobrze jest być świadomym różnicy.
present?wymaga niepustego ciągu.! "".nil?zwraca prawdę, ale"".present?zwraca fałsz.