Проверка, является ли изображение ".attached?"при подключении одного изображения к нескольким моделям происходит сбой - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь прикрепить один и тот же активный образ хранилища к двум разным моделям. Причина в том, что я не хочу, чтобы две копии файлов хранились, и я хочу оптимизировать запросы к БД, чтобы можно было просто запросить «активность»чтобы показать изображения, и не нужно запрашивать как активность, так и сообщения.Изображение прикрепляется, но когда я использую command.attach?он возвращает false для действий.Но это показывает, что у меня есть изображение, когда я делаю @ activity.image

Используя Active Storage, вот мой код

    @post.image.attach(io: File.open(image_file), filename: file_name)
    @activity.image.attach(@post.image)

В консоли:

    >@post.image.attached?
=> **true**

    >@post.image
=> #<ActiveStorage::Attached::One:0x000055d2dd844aa8 @name="image", @record=...

    >@activity.image
=> #<ActiveStorage::Attached::One:0x000055d2dd8529f0 @name="image", @record=...    

    >@activity.image.attached?
=> **false**

Во взглядах:

<%= image_tag @post.image %>  **IMAGE SHOWS UP**
<%= image_tag @activity.image %>  **NO IMAGE**

1 Ответ

0 голосов
/ 01 апреля 2019

Метод attach ожидает файловый объект в качестве params. Пожалуйста, обратитесь прикрепить (прикрепить) . Если вы хотите использовать одно и то же изображение / вложение для 2 моделей, вы можете загрузить их в одну модель и использовать ссылку на URL в другой модели.

@post.image.url

это можно использовать и сохранить как строку: URL вложения в модели деятельности. Таким образом один и тот же файл может быть передан из обоих. Но если модель деятельности может включать и новые вложения, то лучше иметь 2 копии. Кроме того, если изображение будет удалено из ссылочной модели, это может повлиять на другую модель.

...