Ruby on rails 回形针及;aws gems-照片共享应用程序回形针/aws存储的URL在哪里?

Ruby on rails 回形针及;aws gems-照片共享应用程序回形针/aws存储的URL在哪里?,ruby-on-rails,heroku,amazon-s3,ios6,paperclip,Ruby On Rails,Heroku,Amazon S3,Ios6,Paperclip,我指的是这个应用程序作为一个教程。看了之后。我很想了解程序(客户端或服务器)如何访问图像。既然该程序在上传到AmazonS3后似乎没有明确地将图像URL保存在服务器数据库中 实现此应用程序后,我在数据库中看不到图像URL或路径的列。但是程序神奇地将图像加载到客户端 引擎盖下发生了什么事,那是什么事 以下是照片模型方法: Paperclip.interpolates :prefix do |attachment, style| "#{attachment.instance.takenby

我指的是这个应用程序作为一个教程。看了之后。我很想了解程序(客户端或服务器)如何访问图像。既然该程序在上传到AmazonS3后似乎没有明确地将图像URL保存在服务器数据库中

实现此应用程序后,我在数据库中看不到图像URL或路径的列。但是程序神奇地将图像加载到客户端

引擎盖下发生了什么事,那是什么事

以下是照片模型方法:

 Paperclip.interpolates :prefix  do |attachment, style|
   "#{attachment.instance.takenby}/#{Date.today.to_s }/#   
  {attachment.instance.image_file_name}"
 end 

 has_attached_file :image,
                :path => ":prefix/:style/:basename.:extension",
                :styles => { :thumbnail => "57x57", :original => "300x300" },
                :storage => :s3,
                :s3_credentials => S3_CREDENTIALS


  validates :image,:presence => true
  validates :lat, :lng,:presence => true,:numericality => true

它就在
的选项中,已附加了文件
。您已经在
:path
参数中告诉它如何构造图像的路径(对应于s3上的文件名)。所以回形针再次找到图像需要知道的是:

  • s3存储桶的主机名
  • 用于重新构造路径的相关信息—在本例中,它看起来像
    :prefix
    :basename
    :style
    :extension
  • 大部分信息都在您的数据库中。大概是
    :basename
    以某种方式来自原始文件名,该文件名应该保存在图像附加到的模型的
    image\u file\u name
    字段中<代码>:样式取决于运行时查找的图像大小<代码>:可通过
    图像内容类型
    属性确定扩展名

    :前缀
    有点棘手。事实上,我担心插值规则会破坏图像查找,因为
    日期。今天它用来构造前缀。你有超过一天的照片吗?如果是的话,它们还能工作吗?我担心当上传图像时,它会有一个包含当天日期的文件名,然后当你将来查找它们时,你会使用新的当前日期重新构建url,并最终导致403错误


    TL;DR paperclip在将图像上传到s3时构建图像url,然后再根据相同的参数重新构建图像。

    你一针见血。:前缀正是导致重建路径出现问题的原因!无法检索超过1天的图像。我已经做了改变。我对它的工作原理感到困惑,但现在一切都有了意义。非常感谢您的澄清。--------------+1