dimensioni validate di caricamento utilizzando Carrierwave
-
13-10-2019 - |
Domanda
Nella nostra ultima applicazione abbiamo bisogno di elaborare alcuni arrivi, ho lavorato con graffetta prima e tutto funziona! ma stiamo dando carrierwave una prova, sembra promettente, ma, non riesco a trovare come convalidare la dimensione del un allegato , sembra che la documentazione non ha alcuna informazioni su di esso, dovremmo aggiungerlo manualmente il modello tramite un validatore personalizzato?
Grazie in anticipo!
Soluzione
C'è una voce di Wiki su GitHub: https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Validate-attachment-file-size
Altri suggerimenti
Ho fatto un Active Modello File validatori gemma che controlli tipo di contenuto e la validazione dimensione del file per Carrierwave , graffetta, Drangonfly, REFILE (si spera che possa funzionare con altre soluzioni di caricamento). Rileva il tipo di contenuto in base al contenuto del file e ha rilevatore di un tipo di supporto parodia. Funziona sia prima che dopo il caricamento.
Dalla versione 1.0
CarrierWave è dotato di convalida dimensione del file.
Installa ultimo gioiello carrierwave
gem 'carrierwave', '~> 1.0'
Aggiungi metodo size_range
per fornire una dimensione min e una dimensione massima
class ImageUploader < CarrierWave::Uploader::Base
def size_range
0..2.megabytes
end
Nel modello aggiuntivo validates_integrity_of
ad valido un file di dimensioni (e il tipo di contenuto) di un'immagine.
class Image < ApplicationRecord
mount_uploader :image, ImageUploader
validates_integrity_of :image
Ecco la soluzione che mi è venuta - il trucco era che non potevo controllare la dimensione del file direttamente come che ha fatto la bomba Nebbia rubygem se il file non è stato caricato. Mi aspetto che ci sia un modo più pulito per chiedere CarrierWave se un file è stato caricato.