追記
タイトルを「最初に特定のページにアクセスするとエラーになる」としていましたが、
でも必ずしもそうじゃないような感じで「1度目のアクセス以降はエラーにならない」が正しいかもしれず、
タイトルを変更しました。
エラーになる条件がよくわからないです。
困っていること
ArgumentError (Unknown validator: 'ContentTypeValidator'):
というエラーがでます。
少し試してみると、特定のページ(/microposts → MicropostsController#index)に最初に入ったときにエラーがでます。他のページからそのページ(/microposts)に入ると、問題ないようです。
なお、heroku にpush して本番環境で試してみると、どのページであっても同じエラー「ArgumentError (Unknown validator: 'ContentTypeValidator')」がでます(heroku logs --tailとして、ログを閲覧して確かめてます)。
環境
Rails version 6.0.3.2
Ruby version ruby 2.6.6p146 (2020-03-31 revision 67876) [x64-mingw32]
RubyGems version 3.0.3
Rack version 2.2.3
Rails6 の ActiveStorage を利用してます。
エラー画面
Started GET "/microposts" for 127.0.0.1 at 2020-07-04 06:39:39 +0900 (23.9ms) SELECT sqlite_version(*) (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC Processing by MicropostsController#index as HTML User Load (21.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ app/helpers/sessions_helper.rb:10:in `current_user' Completed 500 Internal Server Error in 424ms (ActiveRecord: 23.4ms | Allocations: 25537) ArgumentError (Unknown validator: 'ContentTypeValidator'): app/models/micropost.rb:15:in `<class:Micropost>' app/models/micropost.rb:1:in `<top (required)>' app/controllers/microposts_controller.rb:61:in `index'
エラーの場所
ruby
1class Micropost < ApplicationRecord 2 3 validates :image, content_type: { in: %w[image/jpeg image/gif image/png], 4 message: "must be a valid image format" }, 5 size: { less_than: 5.megabytes, 6 message: "should be less than 5MB" } 7end
Railsチュートリアル(第6版)の第13章 リスト13.66と全く同じ書き方をしています。
この第2引数の content_type というvalidationはないと怒られているようです。
content_typeのところで、特定のページに最初に入ったときのみエラーがでるので不可解です。
#最後に
全くわからず、直接解決にいたらずとも、解決のヒントになりそうなことがあれば、教えていただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/26 21:43
2020/09/29 22:25