我有一个回形针实例,我正在将我的文件迁移到不同的区域。最初文件存储在我的服务器上,只是根据创建的记录的 ID 和原始 ID 给出了一个文件名。现在我将它们移动到 s3 并希望更新文件名以正常工作。我像这样设置回形针配置:
:path => ":class/:attachment/:hash-:style.:extension",
:url => ":s3_domain_url",
:hash_secret => SECRET,
:hash_data => ":class/:attachment/:id/:updated_at"
我将文件的原始记录文件名更新为唯一,并将它们移至我的 s3 实例。不幸的是,现在我无法从 s3 中提取文件,我认为这是因为回形针使用了错误的文件名路径。一个基于现在使用我的配置文件设置的路径默认值。我希望能够更新我的文件 file_name 字段,以便新文件的路径正确并且我能够适本地下载它们。有没有一种方法可以直接根据我的 secret 和 hash_data 调用回形针哈希函数,这样我就可以更新那些 file_name 字段并能够立即提取这些记录?自从我的原始服务器移动后上传的所有内容似乎都能正常工作。
最佳答案
假设您有一个模型 User,其附件名为 profile_pic;
进入 Rails 控制台,例如。 rails c
然后为您有附件的模型获取一个对象,例如。 u = User.find(100)
。
现在键入 u.profile_pic.url
获取 url 或 u.profile_pic_file_name
获取文件名。
要查看其他选项(例如您的旧选项)的效果,您可以这样做;
p = u.profile_pic # gets the paperclip attachment for profile_pic
puts p.url # gets the current url
p.options.merge!(url: '/blah/:class/:attachment/:id_partition/:style/:filename')
puts p.url # now shows url with the new options
同样,p.path
将显示本地文件路径以及您选择的任何选项。
长话短说,类似;
User.where('created_at < some_date').map do |x|
"#{x.id} #{x.profile_pic_file_name} #{x.profile_pic.path}"
end
应该给你你想要的:)
关于ruby-on-rails - 将服务器上的回形针路径文件名更新为 s3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347373/