Ruby on rails 回形针附件在查询字符串时未使用正确的更新\u
我使用的是Rails+回形针+S3。我希望使用我的一个S3存储桶将我的资产托管到Cloudfront 我知道Cloudfront缓存资产,但您可以通过将其配置为从源服务器转发查询字符串来破坏该缓存 当我修改资产时,我预计会发生这种情况Ruby on rails 回形针附件在查询字符串时未使用正确的更新\u,ruby-on-rails,amazon-s3,paperclip,amazon-cloudfront,Ruby On Rails,Amazon S3,Paperclip,Amazon Cloudfront,我使用的是Rails+回形针+S3。我希望使用我的一个S3存储桶将我的资产托管到Cloudfront 我知道Cloudfront缓存资产,但您可以通过将其配置为从源服务器转发查询字符串来破坏该缓存 当我修改资产时,我预计会发生这种情况 ActiveRecord对象的时间戳处的updated_已更新 曲别针更新S3上图像的查询字符串,以反映在时间更新的新的updated\u 由于新的时间戳查询字符串,Cloudfront为新映像提供服务 但是,回形针似乎没有在时间戳处正确更新updated\u。也
updated\u
updated\u。也许它被缓存了。因此,查询字符串不会更新,Cloudfront也不会中断缓存
我的模型是:
class UserImage < ActiveRecord::Base
has_attached_file :image
end
>> ui = UserImage.find(576925)
>> ui.image.class
=> Paperclip::Attachment
>> ui.touch
>> ui.updated_at.to_i
=> 1386241041
>> ui.image.updated_at
=> 1386240937
class-UserImage>ui=UserImage.find(576925)
>>ui.image.class
=>回形针::附件
>>触摸屏
>>ui.updated_at.to_i
=> 1386241041
>>ui.image.updated_位于
=> 1386240937
这两个更新的时间戳应该是相同的。看起来这可能是早期版本的回形针(我使用的是2.7)的一个bug,因为它在未来的版本中工作
作为参考,这是我如何让它工作。在模型的after_更新中,我强制刷新实例,如下所示:
image.instance_write(:updated_at, Time.now.utc)
self.send(:update_without_callbacks)
我必须在没有回调的情况下执行update\u
,这样它就不会在回调中陷入无限循环
现在附件上的updated\u在
时间被更新,强制在Cloudfront上刷新。您到底是如何更新记录的?当您发出save
或create
命令时,我认为Rails在
更新了updated\u?我添加了ui。触摸
显示对象如何更新并不重要。