Carrierwave Cloudinary图像上传有效,但上传后立即返回空值

时间:2017-09-18 03:12:18

标签: ruby-on-rails carrierwave image-uploading cdn cloudinary

首先,让我说 - Cloudinary和Carrierwave都很棒。 Carrierwave,超级简单的图像上传。

Cloudinary提供10GB存储的免费计划,非常慷慨。

我的问题

我基本上用Carrierwave测试Cloudinary。

我让他们两个都工作的意义是,当我使用Mac上的Postman应用程序创建一个带有图像文件附件的新用户(或更新现有用户)时,图像实际上会保存在Cloudinary CDN上之后我的数据库中的URL值,但src/的JSON响应值为null:

Postman screenshot

您可以在返回的回复中看到问题,scr/字段都包含a = request.GET['country'] b = request.GET['name'] c = request.GET['title'] ... result = models.Data.objects.filter('country' = a, 'name' = b, 'title' = c, ...) 值。

但是,当我在浏览器中查看avatar avatar的{​​{1}}操作时,会显示null值:

JSON response

可能导致此问题的任何想法?

可能是在创建/更新index实体时,Cloudinary尚未及时完成上传信息,因此Carrierwave将值保存为null以及之后,当Cloudinary完成处理时,它回调Carrierwave来更新值?

我没有做任何花哨的事,只是基本的代码:

UsersController

UsersController

Mac终端输出

avatar

希望这是一些我不知道的愚蠢错误或快速配置选项,而不是Carrierwave或Cloudinary方面的一些错误。

之前有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:1)

嗯......好吧,我想我找到了一个解决方案/解决方法?

也许有些Rails或Carrierwave开发者可以向我解释为什么我需要这样做才能解决问题:

def create
  user = User.new(user_params)

  if user.save
    # -------------------------------------------------
    # NEED TO RELOAD FOR CARRIERWAVE
    # -------------------------------------------------
    user.reload 

    render json: user, status: :created
  else
    render json: user.errors, status: :unprocessable_entity
  end
end

似乎是一个可能影响系统性能的额外步骤。

我不应该这样做吗?