Получить URL-адрес прикрепления скрепки от объекта ассоциации - PullRequest
0 голосов
/ 27 января 2020

У меня есть приложение для рельсов, которое имеет две таблицы: таблицу «Место проведения» и таблицу «Событие».

Место проведения has_many: события, Событие has_one: место проведения.

Чтобы уменьшить нагрузку на клиентскую часть, я выбираю только необходимые столбцы для отправки с помощью моего JSON API.

@events = Event.joins(:venues).select("events.name", "events.description","events.image" ,"events.image_file_name" "venues.name as venue_name","venue.area as venue_area", venues.image as venue_image","venues.image_file_name as venues_image_file_name")

Когда я выбираю имя_файла_файла из таблицы событий, я вижу правильный URL-адрес изображения события. Но в том же процессе в таблице места ассоциации возвращается значение "null".

Как мне удается получить URL-адрес изображения из таблицы ассоциации, используя SQL запросы?

1 Ответ

0 голосов
/ 27 января 2020

paperclip использует несколько полей для каждого вложения, в вашем случае это будут image_file_name, image_content_type, image_file_size и т. Д., См. Вашу схему.

Также эти поля должны быть в модели сам. Вы можете попробовать добавить has_attached_file :venue_image, который будет читать выбранные атрибуты места в модели Event. Но вам придется переопределить параметры url и path, потому что имя класса, которое встречается в пути, будет другим.

Другой простой способ - вручную создать URL-адрес на основе имени файла, как это делает paperclip.

Но в целом - скрепке не хватает гибкости (и она устарела), поэтому вам следует взглянуть на другие библиотеки вложений, такие как shrine

...