[Ruby on Rails] Read try (: [] ,: key)

introduction

user.try(:[],:name)

La première fois que j'ai vu ce code "Pourquoi mettez-vous un tableau vide dans la partie méthode ...?" J'ai pensé. C'est une mauvaise chose que j'ai sauté la grammaire Ruby (Rails) ...

Qu'est-ce que Rails essaie en premier lieu?

Méthodes incluses dans Active Support (ne peuvent pas être utilisées uniquement avec Ruby) Utilisez la méthode spécifiée uniquement lorsque l'objet cible n'est pas nul Donnez la méthode que vous souhaitez utiliser comme premier argument et son argument (si nécessaire) comme deuxième argument

user = {name: "test"}

# user[:group]Provoque une erreur de méthode car est nul
user[:group].replace("A")
# => NoMethodError: undefined method 'replace' for nil:NilClass

#Si vous utilisez try sur une cible nil, aucune erreur ne se produira, seul nil sera retourné
user[:group].try(:replace,"A")
=> nil

Un tableau vide est-il une méthode?

C'est le sujet principal, mais Ruby's Hash a une méthode []. Prend le nom de la clé comme argument et renvoie sa valeur.

user.[] :name
=> "test"
#C'est l'utilisateur[:name]Pareil que

En passant, "+" etc. peut également être utilisé comme méthode.

user[:name].+ 2
=> "test2"

Dans ce cas, c'est une combinaison d'essayer et de cette méthode

user.try(:[],:name)
=> "test"

Le résultat sera retourné.

Sommaire

J'ai eu du mal à comprendre [] parce que je ne l'ai pas frappé facilement. Réétudier la grammaire rubis / rails ...

Recommended Posts

[Ruby on Rails] Read try (: [] ,: key)
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
Record d'apprentissage Ruby on rails -2020.10.04
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
[Introduction] Créer une application Ruby on Rails
Essayez d'utiliser l'attribut de requête Ruby on Rails
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
[Ruby on Rails] Introduction de la fonction de pagination
Connaissance de base de Ruby on Rails
Progatez Ruby on Rails
[Ruby on Rails] Ajouter une colonne avec des contraintes de clé externe
Comment utiliser Ruby on Rails
Ruby on Rails compatible japonais-anglais i18n
(Ruby on Rails6) "Effacer" le contenu publié
[Ruby on Rails] Fonction de sortie CSV
Mémo de construction de l'environnement Ruby on Rails 6.0
[Ruby on Rails] Création de la page de confirmation
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] Implémentation de la fonction de commentaire
[Ruby on Rails] DM, fonction de chat
[Ruby on Rails] Méthode d'aide pratique
[Ruby on Rails] Arrêtez de "boucler jusqu'à ce que ..."
[Ruby on Rails] Introduction des données initiales
[Ruby on Rails] Création d'un formulaire de demande
Ruby on Rails6 Guide pratique cp13 ~ cp15 [Mémo]
[Ruby on Rails] Afficher le test avec RSpec
[Ruby on Rails] Vérification du code à l'aide de Rubocop-airbnb
[Ruby on Rails] 1 modèle CRUD (routage principal)
Méthode d'installation de Ruby on Rails [édition Mac]
Modèle [Ruby on Rails], commande de terminal de contrôleur
Commande de création / suppression de modèle Ruby on Rails
Essayez de déployer l'application Rails sur EC2-Part 1-
Ruby on Rails6 Guide pratique cp7 ~ cp9 [Mémo]
Ruby on Rails dans les espaces de codes Visual Studio
[Ruby on Rails] Suivez l'implémentation de la fonction: bidirectionnelle
Remarques sur l'utilisation de FCM avec Ruby on Rails