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.
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."
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