1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby on Rails】Active StorageがうまくAttachmentされずに苦しんだ話

Posted at

はじめに

Ruby on RailsでECサイトを作成する課題に取り組んでいたところ、Active Storageでattachした画像が何度やってもnilになってしまい苦しみました。
私のような稀有な現象に悩む方のために記事として残しておきます。

原因

原因はActive StorageがAttachmentする対象テーブルでデフォルトの連番idを使用しなかったことでした。
テーブルを作成した際に「id」カラム、「created_at(作成日時)」カラム、「updated_at(作成日時)」カラムは自動で作成されます。
しかし、今回作成する商品テーブルでは商品IDを使用するため、自動採番される値ではなく、こちらで決めたユニーク値を設定しました。
Active Storageが作成した「active_storage_attachments」テーブルは連番idを参照しているため紐づけることができずnilが渡されることが原因でした。

AttachmentされないDB

item テーブル

id name price description created_at updated_at
sid-001 itemName 1200 text text text 2024-01-01 2024-01-01

active_storage_attachments テーブル

id name record_type record_id blob_id created_at
1 image Item 0 1 2024-01-01

このように「active_storage_attachments」テーブルの「record_id」が「item」テーブルの「id」を参照していますが値が違うため、うまく結合されません。

おわりに

調べても同じような事例が見つからず苦労しました。
同じようなことをする人がいないということでしょうか。。。
少し心が傷つきました(泣)

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?