[RUBY] Appelle la chaîne de caractères passée comme argument en tant que méthode avec send

Aperçu

J'ai appris à utiliser la méthode d'envoi, alors prenez note.

J'avais un formulaire dans lequel je pouvais joindre jusqu'à deux images, et je voulais savoir quelle était la taille du message, alors j'essayais de mettre dans un journal.

J'ai donc initialement écrit le code suivant.

Avant de refactoriser

validate :checking_image_size_over_limit

def checking_image_size_over_limit
  logging_image_size(image_first, 'first') if image_first.present?
  logging_image_size(image_second, 'second') if image_second.present?
end

def logging_image_size(image, number)
  if image&.size >= 5 * 1024 * 1024
    Rails.logger.info "[#{self.class.name}] Over 5MB of images (image_#{number})"
  end
end

Je voulais déterminer s'il s'agissait de la première ou de la deuxième feuille, j'ai donc passé une chaîne de caractères comme deuxième argument et l'ai développée dans le message du journal. Cependant, j'ai reçu un avis de mon aîné et je l'ai réécrit en disant: "Si tel est le cas, vous pouvez utiliser envoyer avec un seul argument."

Après refactoring

validate :checking_image_size_over_limit

def checking_image_size_over_limit
  logging_image_size('image_first') if image_first.present?
  logging_image_size('image_second') if image_second.present?
end

def logging_image_size(image)
  if send(image)&.size >= 5 * 1024 * 1024
    Rails.logger.info "[#{self.class.name}] Over 5MB of images (#{image})"
  end
end

En parlant d'envoi, je n'avais que l'image de l'utiliser pour changer de méthode de manière dynamique, mais j'ai appris qu'il peut également être utilisé en invoquant à nouveau la chaîne de caractères passée en argument en tant que méthode.

Recommended Posts

Appelle la chaîne de caractères passée comme argument en tant que méthode avec send
Lisez le fichier sous le chemin de classe sous forme de chaîne de caractères avec ressort
[Rubiy] Je veux créer un tableau à partir d'une chaîne de caractères avec la méthode split. Et vice versa.
À propos de la méthode de conversion d'une chaîne de caractères en entier / fraction (données de conversion) en Java
Sortez avec un suffixe sur la méthode
Sortez avec un suffixe sur la méthode 2
Arguments avec des valeurs par défaut Prenez la méthode full_title du tutoriel Rails comme exemple
[Java] Découpez une partie de la chaîne de caractères avec Matcher et des expressions régulières
[Ruby] Découpez une chaîne de caractères à l'aide de la méthode slice
Envoyer un e-mail avec une pièce jointe PDF via JavaMail
Note n ° 6 "Calculez la formule de la différence de somme à un chiffre reçue sous forme de chaîne de caractères" [Java]
Réglez la date et l'heure à partir de la chaîne de caractères avec POI
Précautions lors de l'utilisation de Mockito.anyString comme argument lors de Mocking avec Mockito
Java learning_Behavior lorsqu'il y a un champ avec le même nom et une méthode avec le même nom dans deux classes dans une relation d'héritage
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
Code pour spécifier le nom de l'image sous forme de chaîne de caractères et le coller dans ImageView (Android)
[ruby] Appel d'une méthode avec un argument
Lorsque la chaîne de caractères transmise au C ++ par JNA est déformée
Tri d'une liste avec un tableau de type int comme élément (Java) (Comparator)
Connexion à une base de données avec Java (partie 1) Peut-être la méthode de base
[Rails] Comment omettre l'affichage de la chaîne de caractères de la méthode link_to