为 Rails 中的载波上传图像显示自定义 url

Display a custom url for a carrierwave uploaded image in Rails

我正在 public 文件夹之外的文件夹中上传一些图像。我在上传时创建了图像的预览版本。在我的上传器中,我有:

  def store_dir
    "#{Rails.root}/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :preview do
    process :resize_to_fit => [500, 500]
  end

效果很好,我没有遇到任何问题,但是现在当我的 JSON api 将模型发送到我的前端应用程序时,图像和图像的 url 参数预览版本设置为我机器上文件的确切文件路径。我显然不想这样。

有没有一种方法可以像设置 store_dir 一样为图像存储自定义 url,这样我以后就可以创建一个控制器方法来为这些图像提供服务图片?

我不记得有任何简单的解决方案,但我认为您可以通过手动构建在 JSON 中指定 url 来实现。例如,您可以使用 gem 之类的 RABL,active_model_serializers 或模型中的构建方法,例如。 def to_public_json 为图像自定义 url。