Valider les dimensions de l'image dans l'attachement fu
-
26-09-2019 - |
Question
Lorsque l'image est enregistrée, la hauteur et la largeur de l'image sont enregistrées correctement dans le modèle. J'ai une exigence où je dois valider les dimensions de l'image avant d'enregistrer. Il doit être précisément les mêmes dimensions. Mais lorsque j'essaie d'accéder à la hauteur ou à la largeur avant de sauver, cela me donne nulle.
Existe-t-il un moyen d'y parvenir?
Pour l'instant, je donne un avertissement après la sauvegarde, que l'image n'est pas des dimensions souhaitées. Mais ce n'est pas assez soigné.
La solution 2
j'ai utilisé after_validation
. before_validation
N'a pas travaillé pour moi. Alors ce que j'ai essentiellement fait, c'est que j'ai vérifié les dimensions dans un after_validation
crochet et l'a fait mettre des erreurs en utilisant @image.errors.add_to_base("The image needs to be of precisely 137x52 pixels.")
. Et j'ai enregistré l'image de la manière suivante.
@image.valid? # Run the validations, which calls my hook method after_validation
@image.save if @image.errors.empty?
Autres conseils
Je ne suis pas sûr de attachement_fu, mais la véritable image est probablement sauvegarde dans un before_save
ou after_save
. Votre validation s'exécute avant l'enregistrement des images.
Utiliser un before_validation
rappel pour forcer le traitement de l'image.