Étant donné qu'Active Storage n'a pas de validation par défaut, il enregistre l'heure à laquelle vous définissez vous-même la validation sous forme de mémorandum.
・ Rubis '2.5.7' ・ Rails '5.2.3'
Exécutez la commande suivante pour installer Active Storage.
$ rails active_storage:install
Un fichier de migration est créé qui crée les deux tables suivantes. ・ Active_storage_attachments ・ Active_storage_blobs
rails db: migrez pour créer la table.
$ rails db:migrate
Nous l'associerons au modèle. Ici, on suppose que plusieurs images de profil sont définies dans le modèle utilisateur.
models/user.rb
class User < ApplicationRecord
has_many_attached :avatars
end
: avatars
est le nom du fichier, et vous pouvez spécifier ce que vous voulez, comme : photos '',
: images '', etc. en fonction de l'objectif du fichier. Il n'est pas nécessaire de fournir des colonnes pour les images dans le modèle utilisateur.
Nous définirons la validation pour le modèle utilisateur. Ici, nous allons effectuer les trois réglages suivants.
・ Avatar_type Spécifiez le format de fichier qui peut être téléchargé.
・ Taille de l'avatar Spécifiez la taille (capacité) d'un fichier qui peut être téléchargé.
・ Longueur_avatar Spécifiez le nombre de fichiers pouvant être téléchargés.
models/user.rb
class User < ApplicationRecord
(réduction)
validate :avatar_type, :avatar_size, :avatar_length
private
def avatar_type
avatars.each do |avatar|
if !avatar.blob.content_type.in?(%('image/jpeg image/png'))
avatar.purge
errors.add(:avatars, 'Veuillez télécharger au format jpeg ou png')
end
end
end
def avatar_size
avatars.each do |avatar|
if avatar.blob.byte_size > 5.megabytes
avatar.purge
errors.add(:avatars, "Doit être dans les 5 Mo par fichier")
end
end
end
def avatar_length
if avatars.length > 4
avatars.purge
errors.add(:avatars, "Veuillez garder dans les 4 feuilles")
end
end
end
Au fait, les données temporaires sont supprimées par `ʻavatars.purge``. Si une erreur de validation se produit dans d'autres éléments d'entrée, le fichier téléchargé sera enregistré dans le stockage lorsqu'il est affecté à l'attribut de l'instance de modèle dans les séries Rails 5.2 à 6.0 ou antérieures, et par conséquent, il sera dans le blob. Cela est dû au fait que les données temporaires pour les erreurs peuvent s'accumuler. (Cependant, il y a eu un changement dans la fonction d'Active Storage dans la mise à jour vers Rails 6.0, et après que la méthode de sauvegarde a été exécutée, elle a été changée en spécification pour être sauvegardée dans le stockage, donc il est inutile si elle est 6.0 ou ultérieure)
Vous disposez maintenant des paramètres de validation suivants!
Déterminez si Active Storage peut être utilisé comme un substitut à Carrier Wave Implémenter la fonction de téléchargement d'images à l'aide de Rails5 Active Storage
Recommended Posts