[RUBY] Points à prendre en compte lors de la combinaison d'instructions if et d'opérateurs logiques

introduction

Il y avait certains points à prendre en compte lors de la combinaison de l'instruction if et de l'opérateur logique, je vais donc les résumer.

Description de base

si expression conditionnelle
 #Traitement lorsque l'expression conditionnelle est vraie
else
 #Traitement lorsque l'expression conditionnelle est fausse
end

Opérateur logique

&& → et ||→ ou

Combinaison de l'instruction if et de l'opérateur logique

si expression conditionnelle 1&&Expression conditionnelle 2
 #Traitement lorsque l'expression conditionnelle 1 et l'expression conditionnelle 2 sont vraies
else
 #Traitement lorsque même l'une des expressions conditionnelles a la valeur false
end

En regardant cela en détail, lorsque l'expression conditionnelle 1 est fausse, le code de l'expression conditionnelle 2 n'est pas lu en premier lieu. En particulier,


<% if user_signed_in? && @message.user.id == current_user.id %>
<% if @message.user.id == current_user.id && user_signed_in? %>

Lors de l'utilisation de l'appareil pour séparer l'affichage entre l'état connecté et l'état non connecté Si vous êtes connecté, aucun des codes ne provoquera d'erreur. Cependant, si vous n'êtes pas connecté Le code ci-dessus ne provoque pas d'erreur, mais le code ci-dessous le fait.

La raison en est que «@ message.user.id» et «current_user.id» ne sont pas saisis sauf s'ils sont connectés, et il n'est pas possible de déterminer s'ils sont égaux à «==» en premier lieu. D'un autre côté, dans la formule ci-dessus, si vous n'êtes pas connecté au moment de ʻuser_signed_in? , False est retourné, vous n'avez donc pas à utiliser le code après && `pour la discrimination.

Recommended Posts

Points à prendre en compte lors de la combinaison d'instructions if et d'opérateurs logiques
Points à garder à l'esprit lors de l'utilisation de l'instruction if
Points à garder à l'esprit lorsque vous vous engagez dans CRuby
Points à noter lors de l'ajout de la guerre à la dépendance
Points à garder à l'esprit lors du test de méthodes privées dans JUnit
N choses à garder à l'esprit lorsque vous lisez «Introduction au printemps» et «Introduction au printemps» à l'ère Reiwa
Choses à noter lors de l'installation de Jekyll sur Windows et du chargement des thèmes! !! Besoin de tzinfo !!
Points à garder à l'esprit lors de l'utilisation d'Apache PDFBox® avec AWS Lambda
Volume qui souhaite utiliser de nombreux opérateurs logiques dans l'instruction if
11 Correspond aux opérateurs de comparaison et logiques
[Java Bronze] 5 problèmes à garder à l'esprit
[Pas de virgule (,) dans l'adresse! ] Points à garder à l'esprit lors de la demande d'examen à Pearson VUE
[Ruby] Difficulté à refactoriser les opérateurs logiques (précision et lisibilité)
Éléments à prendre en compte lors de l'écriture de code en Java
Comment écrire lorsque vous souhaitez conserver les sauts de ligne et la sortie tout en évitant XSS dans Rails
[Pour les super débutants] Les connaissances minimales que vous voulez garder à l'esprit avec les hachages et les symboles
Instructions Java if et switch
Impossible d'obtenir des ressources lors de l'utilisation de modules avec Gradle et IntelliJ
Précautions lors de l'utilisation de Spring AOP avec les classes de ressources Jersery
[jOOQ] Comment utiliser CASE WHEN dans la clause WHERE / AND / OR
Points à retenir et concepts dans le didacticiel Ruby on Rails