Paperclip使用什么方法来清理文件名?

时间:2013-08-30 17:41:38

标签: ruby-on-rails-3 paperclip

Thoughtbot的Paperclip gem(v 3.2.1)将清理文件名,用下划线替换空格和其他特殊字符。我正在重新导入数据并需要检查附件是否已上载,但原始文件名可能与Paperclip中的附加文件名不匹配。 Paperclip用于清理的方法是什么?

1 个答案:

答案 0 :(得分:1)

找到了挖掘源代码的答案。它是一个私有实例方法Paperclip :: Attachment#cleanup_filename。 (由于这是一个短暂的(一次性)导入任务,我不介意使用未发布的方法的(轻微)风险。)

因此我的代码看起来像这样(Post has_many:attachments; Attachment has_attached_file:attached)

   if @post.attachments.present?
      cleaned_filename = @post.attachments.first.attached.send :cleanup_filename, filename 
      if @post.attachments.map(&:attached_file_name).include? cleaned_filename
        puts "already attached: #{filename}"
        return
      end
    end
    puts "attaching upload: #{filename}"