質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

0回答

718閲覧

undefined method `content_type' for "%PDF-1.5\n":String

bata1016

総合スコア2

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/10/07 07:56

編集2020/10/08 01:46

フォームオブジェクトで複数のPDFアップロードのテストを行っておりますが、エラーが出てしまいます。
カスタムバリデーションを用いており、アプリケーション上ではうまくバリデーションが機能しておりますが、テストになるとcontent_type=nilでエラーとなります。
宜しくお願いします。

エラー文 1) DocumentFolder フォルダー名、タグ、PDFが存在すれば登録できること Failure/Error: if !image.content_type.include?('pdf') NoMethodError: undefined method `content_type' for "%\xBF\xF7\xA2\xFE\n":String => #<DocumentFolder:0x00007f98d4a501a8 @document_tag="cde", @folder_name="abe", @images= #<Rack::Test::UploadedFile:0x00007f98d4a580d8 @content_type=nil, ←なぜ? @original_filename="test1.pdf", @tempfile= #<File:/var/folders/n2/shxvv46j38s2mtrpy4r8qffc0000gn/T/test120201008-1545-1jofsf6.pdf>>, @user_id=1> カスタムバリデーション def images_type_validate if images != nil images.each do |image| if !image.content_type.include?('pdf') errors.add(:images,'で保存してください') end end end end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bata1016

2020/10/08 02:35

おっしゃる通りで間違いありません。よくわからない文字列に変換されてしまうようです。いただいたリンクの中のメソッドは初見なのですが、Stringになってしまったパスをパスに戻すものがあるのでしょうか?
bata1016

2020/10/08 03:01 編集

バリデーション内のeach文で中身が変わってしまうようです。。。 46: def images_type_validate 47: if images != nil 48: images.each do |image| => 49: binding.pry 50: file_name = File.extname(image) 51: if !file_name.include?(".pdf") 52: # !image.content_type.include?('application/pdf') 53: errors.add(:images,'で保存してください') 54: end 55: end 56: end 57: end [1] pry(#<DocumentFolder>)> image => "%PDF-1.5\n" [2] pry(#<DocumentFolder>)> images => #<Rack::Test::UploadedFile:0x00007f9868d9ad70 @content_type=nil, @original_filename="test1.pdf", @tempfile= #<File:/var/folders/n2/shxvv46j38s2mtrpy4r8qffc0000gn/T/test120201008-2893-bmd2gq.pdf>> [3] pry(#<DocumentFolder>)> File.extname(images) => ".pdf" [4] pry(#<DocumentFolder>)> File.extname(image) => ".5\n"
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問