sto provando a migrare le immagini dal file system locale a dropbox, quindi sto usando carrierwave dropbox gem per spostare tutte le immagini su dropbox. Sono in grado di memorizzare nuove immagini che vengono caricate dalla mia applicazione. Sto cercando di spostare le immagini esistenti.Carrierwave - Salva nil se l'immagine non è stata caricata
sto usando Article.first.avatar? metodo per verificare se l'immagine esiste o no, ho usato questo metodo in molti posti per diverse dimensioni di immagini nella mia applicazione.
quando utilizzo il metodo sopra riportato per scoprire se l'immagine esiste o meno, si dice vero sempre quando l'immagine non è presente nella casella personale. Guardate la mia uscita della console (2),
mio uploader:
class Avatar < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage: file
def store_dir
if model
"uploads/#{model.class.to_s.underscore}/#{model.id}/#{mounted_as}"
else
"uploads/#{mounted_as}/"
end
end
end
uscita della console (1)
>Article.first.avatar?
>false
#<AvatarUploader:0x007f9813f1fe70
@file=
#<CarrierWave::SanitizedFile:0x007f9813f1e688
@content_type=nil,
@file="/Users/work/project/app1/public/uploads/370/avatar/avatar.png",
@original_filename=nil>,
@model=
##Article model
@mounted_as=:avatar,
@storage=#<CarrierWave::Storage::File:0x007f9813f1fad8 @uploader=#<AvatarUploader:0x007f9813f1fe70 ...>>,
@versions={}>
ho cambiato uploader come segue: uscita
class Avatar < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage: dropbox
def store_dir
if model
"uploads/#{model.class.to_s.underscore}/#{model.id}/#{mounted_as}"
else
"uploads/#{mounted_as}/"
end
end
end
console (2)
>Article.first.avatar?
>true
#<AvatarUploader:0x007f8574143ee8
@file=
#<CarrierWave::Storage::Dropbox::File:0x007f8574143308
@client=
#<DropboxClient:0x007f8574143420
@root="dropbox",
@session=
#<DropboxSession:0x007f8574143498
@access_token=#<OAuthToken:0x007f8574143470 @key="123453333", @secret="22222222222">,
@consumer_key="abcdeafs",
@consumer_secret="asdfasfj",
@locale=nil,
@request_token=nil>>,
@config=
{:app_key=>"asdfasfasf",
:app_secret=>"asdfkasfksf",
:access_token=>"adfkjasfkhs",
:access_token_secret=>"aksdfkhsfksf",
:access_type=>"dropbox",
:user_id=>"292929292"},
@path="uploads/images/370/avatar.png",
@uploader=#<AvatarUploader:0x007f8574143ee8 ...>>,
@model=
#Artcle Model>,
@mounted_as=:image,
@storage=
#<CarrierWave::Storage::Dropbox:0x007f8574143c90
@config=
{:app_key=>"asdfasfasf",
:app_secret=>"asdfkasfksf",
:access_token=>"adfkjasfkhs",
:access_token_secret=>"aksdfkhsfksf",
:access_type=>"dropbox",
:user_id=>"292929292"},
@dropbox_client=
#<DropboxClient:0x007f8574143420
@root="dropbox",
@session=
- perché mostra "true" quando l'immagine non è presente.
- come posso ottenere "false" quando l'immagine non è presente nella casella personale.
Puoi descrivere una domanda più specifica? In che modo l'immagine non verrà caricata? – RockStar
@RockStar ha aggiornato la mia domanda. – Mano