ruby-on-rails - 将 factory_girl 与 PaperClip 4.0 结合使用

标签 ruby-on-rails paperclip factory-bot

有谁知道使用 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 的原始讨论在这里:How Do I Use Factory Girl To Generate A Paperclip Attachment?

最佳答案

该问题似乎是由 line 61 in media_type_spoof_detector 引起的.

Paperclip 正在尝试查找您上传的"file"的 MIME 类型。如果没有,则无法通过验证来保护您免受文件类型欺骗。

我自己还没有尝试过,但也许最好的办法是使用真实文件,并使用 fixture_file_upload 设置它。方法来自 ActionDispatch::TestProcess .

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

您需要包含 ActionDispatch::TestProcesstest_helper.rb
这是第一次发布 here .

关于ruby-on-rails - 将 factory_girl 与 PaperClip 4.0 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539189/

相关文章:

ruby-on-rails - 工厂女孩 : NameError unintialized constant for one of the factories

ruby-on-rails - 默认情况下显示嵌套属性的表单字段

ruby-on-rails - 文件上传测试真的很慢

ruby - 在 factorygirl 中设置实例变量

ruby-on-rails - 清理回形针错误消息

ruby-on-rails - 旋转附有回形针的图像

ruby-on-rails-3 - 与工厂女孩一起使用回形针,没有图像处理程序错误

ruby-on-rails - Mongoid embeds_many 验证错误消息是 plural_objects + "is invalid"

ruby-on-rails - 遍历状态 - 范围? ruby /rails

mysql - 将事件记录列名称覆盖为大写