ใช้ Factory_girl กับ PaperClip 4.0

ไม่มีใครรู้วิธีที่เหมาะสมในการสร้างไฟล์แนบ PaperClip 4.0 ด้วย Factory_girl โดยข้ามการประมวลผลและการตรวจสอบความถูกต้องของ 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 อยู่ที่นี่: ฉันจะใช้ Factory Girl เพื่อสร้างไฟล์แนบคลิปหนีบกระดาษได้อย่างไร


person steakchaser    schedule 03.02.2014    source แหล่งที่มา
comment
ปัญหาที่เปิดอยู่ใน repo คลิปหนีบกระดาษ: github.com/ thoughtbot/paperclip/issues/1432   -  person steakchaser    schedule 07.02.2014


คำตอบ (1)


ดูเหมือนว่าปัญหาจะเกิดจาก บรรทัด 61 ใน media_type_spoof_detector.

คลิปหนีบกระดาษพยายามค้นหาประเภท 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::TestProcess ใน test_helper.rb

โพสต์นี้ถูกโพสต์ครั้งแรกที่นี่

person Hayden Ball    schedule 01.05.2014
comment
อืม pivotallabs.com/ ทำ ยังสมัครอยู่เหรอ? - person phillbaker; 10.05.2014
comment
ฉันเชื่อว่านี่คือสาเหตุของ after_create hook ที่ปิดไฟล์ temp อย่างถูกต้องหรือไม่ ฉันอาจจะผิดก็ได้นะ... - person Hayden Ball; 11.05.2014
comment
คุณช่วยอธิบายการทำงานของ after_create hook ได้ไหม ฉันประสบปัญหาในการทำงาน proxy ควรจะเป็นอะไร? เมื่อฉันรันการทดสอบ proxy เป็นศูนย์ - person Daniel Bonnell; 29.05.2015
comment
after_create ควรทำงานเมื่อ FactoryGirl สร้างโมเดลแล้ว พารามิเตอร์ตัวที่สองควรเป็นออบเจ็กต์ที่ FactoryGirl ใช้สร้างโมเดล ดูส่วน has_many ของ rubydoc.info/gems/factory_girl/file/ สำหรับรายละเอียดเพิ่มเติม - person Hayden Ball; 31.05.2015