PaperClip 4.0的女孩

有没有人知道用factory_girl创建PaperClip 4.0附件的正确方法,绕过PaperClip的任何处理和验证?

我以前只能在我的工厂做以下事情:

factory :attachment do
  supporting_documentation_file_name { 'test.pdf' }
  supporting_documentation_content_type { 'application/pdf' }
  supporting_documentation_file_size { 1024 }
  # ...
end

这基本上会让PaperClip认为有一个有效的附件。

从3.5.3升级到4.0后,我现在得到一个验证错误:

ActiveRecord::RecordInvalid: Validation failed: Image translation missing: en.activerecord.errors.models.attachment.attributes.supporting_documentation.spoofed_media_type

注意:PaperClip 3.X的原始讨论如下:如何使用工厂女生生成回形针附件?


该问题似乎是由media_type_spoof_detector中的第61行引起的。

回形针试图找到您上传的“文件”的MIME类型。 当没有一个,它是失败的验证,以保护您免受文件类型欺骗。

我自己并没有尝试过,但也许你最好的选择是使用真实文件,并使用ActionDispatch::TestProcessfixture_file_upload方法进行设置。

factory :attachment do
   supporting_documentation { fixture_file_upload 'test.pdf', 'application/pdf' }

   # This is to prevent Errno::EMFILE: Too many open files
   after_create do |attachment, proxy|
     proxy.supporting_documentation.close
   end
end

您需要在test_helper.rb包含ActionDispatch::TestProcess

这是第一次发布在这里。

链接地址: http://www.djcxy.com/p/18901.html

上一篇: girl with PaperClip 4.0

下一篇: How do I find which Dlls contain specific W32 functions?