ruby-on-rails – Rails Paperclip S3重命名成千上万的文件?
发布时间:2020-12-17 03:00:56 所属栏目:百科 来源:网络整理
导读:我正在尝试重命名s3中的很多文件 – 更改当前的回形针has_attached_file:来自stuff的路径/:id_:updated_at_:style.:extension to stuff /:id_:counter_:style.:extension,其中:counter是与图像在同一模型中的字段. 我对如何重命名所有文件并不是最
我正在尝试重命名s3中的很多文件 – 更改当前的回形针has_attached_file:来自stuff的路径/:id_:updated_at_:style.:extension to stuff /:id_:counter_:style.:extension,其中:counter是与图像在同一模型中的字段.
我对如何重命名所有文件并不是最模糊的 – 最好是在rake任务中. 顺便说一下,每次将新文件保存到记录中时,我都会递增:counter. 这是Rails 3和最新的Paperclip. 有任何想法吗? 谢谢! 解决方法
这是我的解决方案:
# This task changes all of the keys from the current format,# :id_:image_updated_at_:style,to :id_:image_counter_:style. # :image_counter is set arbitrarily at 1,since all records have # a default of 1 in that field (until they're updated). desc "One-time renaming of all the amazon s3 content for User.image" task :rename_s3_files,[:bucket] => :environment do |t,args| require 'aws/s3' cred = YAML.load(File.open("#{Rails.root}/config/s3.yml")).symbolize_keys! AWS::S3::Base.establish_connection! cred bucket = AWS::S3::Bucket.find(args[:bucket]) # Rename everything in the bucket,taking out the timestamp and replacing it with "1" bucket.each do |obj| arr = obj.key.split('_') obj.rename(arr[0] + '_1_' + arr[2]) end end 它只是遍历存储桶中的所有文件,并根据此新架构重命名它们.我将Paperclip路径中的:counter字段设置为默认值为1,因此新文件名中的_1_. 奇迹般有效! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Objective-c – iOS SQLite FMDB交易..正确使用?
- 最新测试版中的Swift C void *和void **指针(4)
- c# – sqlFileStream System.ComponentModel.Win
- c# – HtmlAgilityPack SelectNodes表达式忽略具
- c# – 使用NET Standard 1.X的Nuget包
- ruby-on-rails – Rails路由:浅=>真
- flash – SCORM 1.2 cmi.suspend_data
- ruby-on-rails-4 – 当它包含与同一类型对象的两
- oracle中date类型的比较
- 设计 – 在调用C#代码时,在F#中进行大量空值检查
热点阅读