[RUBY] Rails méthode de confirmation de l'existence correctement utilisé mémo (un? / Vide? / Présent? (! Vide?) / Nil?)

introduction

Dans la vue Rails, il y avait une scène où j'ai écrit un processus comme "afficher s'il y a une image". Il existe plusieurs méthodes pour vérifier l'existence, y compris celles pour Ruby et celles pour Rails. Après quelques recherches, j'ai choisi la méthode "OK, allons-y!" Et je l'ai mise en revue, mais elle a été complètement écrasée, donc je la garderai comme mémorandum afin de ne pas faire d'erreur à l'avenir.

environnement

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

Objectif de l'enquête

Motivation

Il y a eu des articles similaires dans le passé, et la plupart d'entre eux sont en fait "la méthode de jugement d'authenticité de ruby (nil? / Vide? / Blank? / Present?) S'est avérée intéressante //qiita.com/go_d_eye_0505/items/541110cb9821734b0623) ». En plus de cela, les raisons de publier cette fois sont les suivantes.

De plus, vide? Est exclu (parce que la définition de présent? Est-ce! Vide?).

Méthode d'enquête

Utilisez la console des rails.

test =XXX ← Remplacez différemment ici

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

Résultats du sondage

any? !empty?
(empty?Déni de)
present?
(!blank?)
!nil?
(nil?Déni de)
Ruby/Rails Ruby Ruby Rails Ruby
1
Nombres
NoMethodError NoMethodError true true
"foo"
Chaîne
NoMethodError true true true
{key: value}
hacher
true true true true
["foo"]
Tableau
true true true true
true NoMethodError NoMethodError true true
false NoMethodError NoMethodError false true
nil NoMethodError NoMethodError false false
""
Ciel
NoMethodError false false true
" "
Espace demi-largeur
NoMethodError TRUE FALSE true
{}
Hachage vide
false false false true
[]
Tableau vide
false false false true
[nil]
Tableau(L'élément est nul)
FALSE TRUE TRUE TRUE

Le point

À partir de ce résultat, j'ai souligné les points auxquels je devrais faire attention à l'avenir en majuscules dans le tableau, mais je les décrirai à nouveau ci-dessous.

  1. L'espace demi-largeur est considéré comme ~~ existant ~~ ** non vide ** dans ! Empty? Et renvoie true, et dans present? Il est considéré comme vide et renvoie false
    ↑ (Correction) Nous avons reçu des commentaires de @scivola, corrigés et ajoutés. Merci beaucoup.
    (Ajout) Notez que «présent?» (Motoi «vide?») A un large éventail de jugements vides.
    Exemple: en plus des espaces false, nil et demi-largeur, les espaces pleine largeur, les tabulations (\ t), les sauts de ligne (\ n), Unicode (\ unnnn), etc. sont également jugés vides.
  2. L'application de «any?» À un tableau renvoie true s'il y a ** true elements (= non-nil elements) **. D'autres méthodes renvoient true s'il existe un élément, qu'il soit vrai ou non.
  3. Si vous demandez le simple nil à! Nil?, Il retourne faux, mais si vous demandez au tableau composé de[nil], il retourne vrai.

Autre

Dans Rails, il existe également une méthode appelée ʻexists? . Cela semble être utilisé pour vérifier si les données d'une condition spécifique existent dans la base de données, et c'était une méthode définie par ʻActiveRecord :: Base. Je ne le savais pas et je l'ai initialement inclus dans l'enquête, mais tous ont renvoyé NoMethodError.

Apprendre

Ceci est le premier message de Qiita. Je pense que c'est simple et assez naturel, mais c'était une bonne occasion d'approfondir ma compréhension à travers le processus d'examen et d'organisation pour la sortie. Je souhaite publier régulièrement des articles qui me seront utiles (≒ autres) à l'avenir.

URL de référence

À la suite de la vérification de la méthode de jugement d'authenticité de ruby (nul? / Vide? / Vide? / Présent?), Cela s'est avéré intéressant

Recommended Posts

Rails méthode de confirmation de l'existence correctement utilisé mémo (un? / Vide? / Présent? (! Vide?) / Nil?)
Différence entre nul? Vide? Vide? Présent?