0
0

More than 1 year has passed since last update.

Refile::InvalidID エラーが起きた時のメモ

Posted at

環境

gem "refile", require: "refile/rails", github: 'manfe/refile'
gem "refile-mini_magick"

Rails 5.2.6

1.目標

Refileのattachment_image_tag命令でクラウド上の画像を表示したい。

2.状況

  • attachment_fieldフォームで保存した画像をattachment_image_tag命令で呼び出そうとしたところ、Refile::InvalidID in (該当頁)エラーが発生した。
  • マイグレーションファイルにdefault: "default.jpg"等のようなデフォルト値を指定するコードはなかった。(※ https://teratail.com/questions/220379 で、デフォルト値に起因する同挙動エラーの解決報告あり)
  • 該当レコードを保存した際にはフォーム・ストロングパラメータ・モデル全てに不手際があった。
  • 不手際修正後に作成したレコードをattachment_image_tag命令で呼び出そうとしたところ、エラー無く成功した。
  • エラーを生じるレコードを消去しようとしてrailsコンソールから削除命令を出したが、下記の表示が出て削除できなかった。
2.6.3 :001 > Item.find(1).destroy
  Item Load (0.2ms)  SELECT  "items".* FROM "items" WHERE "items"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
   (0.1ms)  begin transaction
  CartItem Load (0.1ms)  SELECT "cart_items".* FROM "cart_items" WHERE "cart_items"."item_id" = ?  [["item_id", 1]]
  Item Destroy (1.2ms)  DELETE FROM "items" WHERE "items"."id" = ?  [["id", 1]]
   (1.1ms)  rollback transaction
Traceback (most recent call last):
        1: from (irb):1
Refile::InvalidID (Refile::InvalidID)

3.原因

 おそらくレコード投稿時にコードの不手際から誤ったRefileの画像識別子を書き込んでしまったのが原因と思われる。
 直接挙動にまではアクセスできていないものの、不手際解消後に投稿したレコードでは問題無く動いている事から確度は高いと思う。
 正規の手段では削除できない該当レコードを削除した後で、正しいコードで再登録すれば解決すると思われる。

4.解決

 railsターミナルからrails db:migrate:resetを送る事で全モデルの全レコードも道連れに異常レコードを削除した。
 削除後、改めてレコードを投稿した後に該当コードを走らせると、エラー無く描画された。
 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0