[RUBY] Rails Existenzbestätigungsmethode ordnungsgemäß verwendetes Memo (beliebig? / Leer? / Vorhanden? (! Leer?) / Null?)

Einführung

In der Rails-Ansicht gab es eine Szene, in der ich einen Prozess wie "Anzeigen, wenn ein Bild vorhanden ist" geschrieben habe. Es gibt verschiedene Methoden zum Überprüfen der Existenz, einschließlich der für Ruby und der für Rails. Nach ein wenig Recherche habe ich die Methode "OK, lass uns damit weitermachen!" Ausgewählt und zur Überprüfung freigegeben, aber sie wurde vollständig zerstört, sodass ich sie als Memorandum aufbewahren werde, damit ich in Zukunft keinen Fehler mache.

Umgebung

macOS Catalina Version 10.15.5 Ruby: 2.6.5 Ruby on Rails: 6.0.3

Umfrageziel

Motivation

In der Vergangenheit gab es ähnliche Artikel, und die meisten davon sind tatsächlich "Rubys Authentizitätsbeurteilungsmethode (Null? / Leer? / Leer? / Gegenwart?) Hat sich als interessant herausgestellt //qiita.com/go_d_eye_0505/items/541110cb9821734b0623) ”. Darüber hinaus gibt es folgende Gründe für die Veröffentlichung.

Darüber hinaus leer? Ist ausgeschlossen (weil die Definition von Gegenwart? Ist! Leer?).

Umfragemethode

Verwenden Sie die Schienenkonsole.

test =XXX ← Hier unterschiedlich ersetzen

test.any?
!test.empty?
test.present?
!test.nil?

Umfrageergebnisse

any? !empty?
(empty?Verweigerung)
present?
(!blank?)
!nil?
(nil?Verweigerung)
Ruby/Rails Ruby Ruby Rails Ruby
1
Zahlen
NoMethodError NoMethodError true true
"foo"
String
NoMethodError true true true
{key: value}
Hash
true true true true
["foo"]
Array
true true true true
true NoMethodError NoMethodError true true
false NoMethodError NoMethodError false true
nil NoMethodError NoMethodError false false
""
Himmel
NoMethodError false false true
" "
Raum halber Breite
NoMethodError TRUE FALSE true
{}
Leerer Hash
false false false true
[]
Leeres Array
false false false true
[nil]
Array(Das Element ist null)
FALSE TRUE TRUE TRUE

Der Punkt

Aufgrund dieses Ergebnisses habe ich die Punkte, auf die ich in Zukunft achten sollte, in Großbuchstaben in der Tabelle hervorgehoben, aber ich werde sie im Folgenden noch einmal beschreiben.

  1. Ein Raum mit halber Breite wird in ! Empty? Als ~~ vorhanden ~~ ** nicht leer ** betrachtet und gibt true zurück, und in present? Wird er als leer betrachtet und gibt false
    zurück ↑ (Korrektur) Wir haben Kommentare von @scivola erhalten und korrigiert und hinzugefügt. Vielen Dank.
    (Ergänzung) Beachten Sie, dass "vorhanden" (Motoi "leer") eine breite Palette leerer Urteile enthält.
    Beispiel: Zusätzlich zu den Leerzeichen false, nil und half Breite werden Leerzeichen voller Breite, Tabulatoren (\ t), Zeilenumbrüche (\ n), Unicode (\ unnnn) usw. als leer beurteilt.
  2. Das Anwenden von "any?" Auf ein Array gibt true zurück, wenn ** true-Elemente (= Nicht-Null-Elemente) ** vorhanden sind. Andere Methoden geben true zurück, wenn es ein Element gibt, ob true oder nicht.
  3. Wenn Sie die Ebene "nil" nach "! Nil?" Fragen, wird false zurückgegeben. Wenn Sie jedoch nach dem Array aus "[nil]" fragen, wird true zurückgegeben.

Andere

In Rails gibt es auch eine Methode namens "existiert?". Dies scheint verwendet zu werden, um zu überprüfen, ob die Daten einer bestimmten Bedingung in der Datenbank vorhanden sind, und es war eine Methode, die von "ActiveRecord :: Base" definiert wurde. Ich wusste nichts davon und nahm es zunächst in die Untersuchung auf, aber alle gaben "NoMethodError" zurück.

Lernen

Dies ist Qiitas erster Beitrag. Ich denke, es ist einfach und ganz natürlich, aber es war eine gute Gelegenheit, mein Verständnis durch den Prozess der Prüfung und Organisation der Ergebnisse zu vertiefen. Ich möchte regelmäßig Artikel veröffentlichen, die mir (≒ anderen) in Zukunft nützlich sein werden.

Referenz-URL

Als Ergebnis der Überprüfung der Echtheitsbeurteilungsmethode von Ruby (null? / Leer? / Leer? / Vorhanden?) Hat sich herausgestellt, dass dies interessant ist

Recommended Posts

Rails Existenzbestätigungsmethode ordnungsgemäß verwendetes Memo (beliebig? / Leer? / Vorhanden? (! Leer?) / Null?)
Unterschied zwischen null? Leer? Leer? Vorhanden?