2017-04-24 3 views
0

の「{***}その内容に一致しない拡張子があります」レールにfixture_file_upload(レールバージョンをアップグレードした後)のクリップクリップをアップロードする際にこの問題が発生しますfixture_file_uploadは、ペーパークリップモデルのレールから4.2.1

paperclip 4.0以上でcontent_typeの検証が必要であることを知っていると、検証後または具体的にdo_not_validate_attachment_file_typeを要求しても、私の仕様はエラー:File has an extension that does not match its contentsで失敗します。

私は複数でこのシナリオを抱えている(すべての私の)クリップモデル...

例は以下の通りである:

モデル:

class SignatureFile < ActiveRecord::Base 
    ... 
    has_attached_file :file 
    VALID_CONTENT_TYPES = ["image/jpeg", "image/jpg", "image/png", "image/gif"] 

    validates_attachment :file, content_type: { content_type: VALID_CONTENT_TYPES }, 
           convert_options: { all: '-auto-orient' }, 
           processors: [:compression] 
    ... 
end 

仕様:

image = fixture_file_upload('spec/fixtures/mobile_api/sample.jpg', 'image/jpg') 

上記のimageを保存しようとすると失敗し、image.errors.full_messagesは:

"File has an extension that does not match its contents"

私は以前にアップグレードの前に通過していたこのようなシナリオがあります。

は、下記の関連宝石のバージョンである私が持っている:

  • 宝石 'レール'、 '4.2.7.1'
  • 宝石 'クリップ'、 '4.2.1' を
  • 宝石「paperclip-私はここで何を圧縮」、 '0.3.7'
  • 宝石 'RSpecのレール'、 '3.4.2'

が欠落することができますか?

答えて

0

fileが不足している可能性があります。悲しいことに、これらのケースではエラーはより正確ではありません。 paperclip docsを読んでください。

+0

Windowsでは、fixture_file_uploadに ':binary'を追加する必要があります。 https://apidock.com/rails/ActionController/TestProcess/fixture_file_upload –

関連する問題