の「{***}その内容に一致しない拡張子があります」レールに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'
が欠落することができますか?
Windowsでは、fixture_file_uploadに ':binary'を追加する必要があります。 https://apidock.com/rails/ActionController/TestProcess/fixture_file_upload –