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.
macOS Catalina Version 10.15.5 Ruby: 2.6.5 Ruby on Rails: 6.0.3
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?).
Verwenden Sie die Schienenkonsole.
test =XXX ← Hier unterschiedlich ersetzen
test.any?
!test.empty?
test.present?
!test.nil?
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 |
any?
Im Enumerable-Modul definiert ist, tritt ein NoMethodError auf, selbst wenn Sie versuchen, ihn für etwas anderes als ein Array oder einen Hash zu verwenden.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.
! Empty?
Als ~~ vorhanden ~~ ** nicht leer ** betrachtet und gibt true zurück, und in present?
Wird er als leer betrachtet und gibt false 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.
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.