Я в процессе перехода от использования Paperclip
до использования ActiveStorage
. Я ознакомился с руководством по миграции, предоставленным здесь .
У меня есть модель Logo
и модель School
.
A School
has_one_attached :logo
и Logo
belongs_to :school
В консоли
school = School.find(119)
school.logo.id
# returns this error ::
Module::DelegationError Exception: id delegated to attachment, but attachment is nil
Основной запрос, который запускается, выглядит следующим образом (это проблема),
SELECT "active_storage_attachments".* FROM "active_storage_attachments" WHERE "active_storage_attachments"."record_id" = $1 AND "active_storage_attachments"."record_type" = $2 AND "active_storage_attachments"."name" = $3 LIMIT $4 [["record_id", 119], ["record_type", "School"], ["name", "logo"], ["LIMIT", 1]]
Я не понимаю, почему запрос ищет в таблице ACTIVE_STORAGE_ATTACHMENTS
запись, которая имеет School
record_type
и record_id
моего School
объекта. Он должен искать в этой таблице тип Logo
и id
моего Logo
объекта.
В моей БД у меня есть запись Logo
, и идентификатор этой записи отображаетсяв столбец record_id
таблицы ACTIVE_STORAGE_ATTACHMENTS
, и эта запись имеет blob_id
, который сопоставляется столбцу id
в таблице ACTIVE_STORAGE_BLOBS
и содержит информацию для правильного изображения.
Таким образом, кажется, что все данные правильны.
Кто-нибудь знает, почему выполняемый базовый запрос SQL ищет неправильные type
и id
, что приводит к ошибке id delegated to attachment, but attachment is nil
?