Ruby on rails Carrierwave-如果未上载图像,则保存为零

Ruby on rails Carrierwave-如果未上载图像,则保存为零,ruby-on-rails,ruby,carrierwave,Ruby On Rails,Ruby,Carrierwave,我正在尝试将图像从本地文件系统迁移到dropbox,所以我使用carrierwave dropbox gem将所有图像移动到dropbox。我能够存储从我的应用程序上载的新图像。我正在尝试移动现有图像 我正在使用Article.first.avatar?方法检查图像是否存在,在我的应用程序中,我在许多地方使用了这种方法来检查不同大小的图像 当我使用上面的方法来确定图像是否存在时,当dropbox中没有图像时,它总是说true。看看我的控制台输出(2) 我的上传者: class Avatar &l

我正在尝试将图像从本地文件系统迁移到dropbox,所以我使用carrierwave dropbox gem将所有图像移动到dropbox。我能够存储从我的应用程序上载的新图像。我正在尝试移动现有图像

我正在使用Article.first.avatar?方法检查图像是否存在,在我的应用程序中,我在许多地方使用了这种方法来检查不同大小的图像

当我使用上面的方法来确定图像是否存在时,当dropbox中没有图像时,它总是说true。看看我的控制台输出(2)

我的上传者:

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
classavatar
控制台输出(1)

>Article.first.avatar?
>假的
#
我更改了上传程序,如下所示:

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
classavatar
控制台输出(2)

>Article.first.avatar?
>真的
#“ASDFKASF”,
:access_token=>“adfkjasfkhs”,
:access_token_secret=>“aksdfkhsf”,
:access_type=>“dropbox”,
:user_id=>“292”},
@path=“uploads/images/370/avatar.png”,
@上传器=#>,
@模型=
#Artcle模型>,,
@已装入的_as=:图像,
@储藏=
#“asdfasfasf”,
:app_secret=>“asdfkasfksf”,
:access_token=>“adfkjasfkhs”,
:access_token_secret=>“aksdfkhsf”,
:access_type=>“dropbox”,
:user_id=>“292”},
@dropbox_客户端=

# 我暗中猜测的是,在Carrierwave中,它返回的普通文件类(经过消毒的文件)通过检查文件是否存在来响应为空:

在carrierwave dropbox gem中,File类()没有实现这一点。我猜如果你重新开课并加上

module CarrierWave
  module Storage
    class Dropbox < Abstract
      class File

        def empty?
          # use dropbox API to get the file and check the presence here
        end
      end
    end
  end
end
模块载体波
模块存储
类Dropbox<抽象
类文件
def是空的吗?
#使用dropbox API获取文件并检查此处是否存在
结束
结束
结束
结束
结束

这可能行得通?

您能更具体地描述一下这个问题吗?图像怎么不会上传?@RockStar更新了我的问题。我在gem中添加了上述方法,并通过返回“false”进行测试,但它总是返回“true”。def是空的吗?返回假结束
>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=
module CarrierWave
  module Storage
    class Dropbox < Abstract
      class File

        def empty?
          # use dropbox API to get the file and check the presence here
        end
      end
    end
  end
end