代码之家  ›  专栏  ›  技术社区  ›  pferrel

从外部过程播种Carrierwave

  •  0
  • pferrel  · 技术社区  · 12 年前

    以最简单的形式。。。

    我在一个应用程序中使用Carrierwave自动上传外部网站上的图像,以便尽可能少地加载它们。当我第一次想要显示图像时,我会触发Carrierwave进行上传。

    数据库的种子是一个在后台Java进程中编写的图像url。然后在Ruby中,我将种子url分配给“remote_image_url”并保存!以便进行上传和版本控制。这一切都很好。

    然而,我必须在数据库中存储一个字段,告诉上传是否被触发,这样我就不会在每次显示图像时都触发它。如何判断“图像”是否已上传?“image”字段实际上是一个Uploader,有没有一个方法可以告诉我它是否被触发了?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Taavo    12 年前

    Carrierwave在您通过分配远程文件后立即下载该文件 model.remote_image_url= ,并且它会在您调用时立即将文件移动到其最终位置(本地存储、S3等) model.save 。这是同步发生的,所以如果 型号保存 已完成,并且没有出现错误,您的文件已被存储。

    换句话说:如果您刚刚从数据库中加载了一个模型,并且 model.image? 是真的,那么 model.image.url 应该是一个工作URL。