Первый вопрос после многих лет попыток никого не беспокоить, но мне действительно нужна помощь. Я создал систему управления контентом Dockerized Rails 5.2 Active Storage / Postgers, которая использует конвейер данных rake для приема набора файлов csv для построения базовых моделей. Последний шаг - загрузить и прикрепить изображения к модели Entity:
has_one_attached :mark
Когда я получаю новый набор файлов csv от своего клиента, у меня есть процесс, в котором я вручную перемещаю новые файлы в папку незавершенной работы, удаляю все файлы в хранилище /, останавливаю все контейнеры, в которых запущено приложение. , базу данных и сервер, а затем запустите набор задач rake, который начинается со сброса и переноса базы данных:
docker-compose run --rm app rake db:migrate:reset
затем запускает два набора задач: один загружает все записи для каждой модели из CSV, а другой связывает все записи друг с другом. Как уже отмечалось, последним шагом было прикрепление изображений. Однако еще до того, как прикрепить изображения снова, я проверяю, что система работает БЕЗ изображений. Обратите внимание, я вручную удалил все в хранилище /, я удалил базу данных, перенес ее, загрузил все данные, ЗА ИСКЛЮЧЕНИЕМ изображений, перезагрузил страницу и получил эту ошибку:
variant delegated to attachment, but attachment is nil
и когда я проверяю entity.mark, я получаю следующее:
Mark: [#<ActiveStorage::Attached::One:0x000055e485721fb8 @name="mark", @record=#<Entity id: 2, name: " Huashan Hospital", slug: "huashan_hospital", imageurl: "https://dl.airtable.com/OE7WXy0jRTe7zdFb79Fj_hsyy....", created_at: "2018-07-20 22:25:58", updated_at: "2018-07-20 22:25:58">, @dependent=:purge_later>
Что заставляет меня задаться вопросом, откуда это? В Postgres НЕТ записей для
select * from active_storage_attachments;
id | name | record_type | record_id | blob_id | created_at
----+------+-------------+-----------+---------+------------
(0 rows)
or in
select * from active_storage_blobs;
id | key | filename | content_type | metadata | byte_size | checksum | created_at
----+-----+----------+--------------+----------+-----------+----------+------------
(0 rows)
и в хранилище нет файлов /
ls -la storage/
total 16
drwxr-xr-x 4 bauer staff 136 Jul 20 15:34 .
drwxr-xr-x 36 bauer staff 1224 Jul 18 21:11 ..
-rw-r--r--@ 1 bauer staff 6148 Jul 20 15:34 .DS_Store
-rw-r--r-- 1 bauer staff 0 May 8 21:20 .keep
Я подозреваю, что моя проблема в том, что я не понимаю, как работает ActiveStorage, в частности, purge vs purge_later, как Docker влияет на разработку Rails, мое хамское поведение ручного удаления хранилища / сброса грубой силы и сброс базы данных, шокирующее высокомерие, которое я показал думая, я мог бы просто изучить Rails 5.2, ActiveStorage и Dockerization одновременно.
Смиренно умоляю.