Получить некоторые данные из таблицы в моей базе данных - Ruby on rails - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть связь моей модели Banner с изображениями, мне нужно привести все изображения, но только файл поля, в файле у меня есть хэш, в котором я просто хочу получить URL

У меня естьэтот код:

Banner.find_by(event_id: @event.id).to_json(:include => [{:images => {:only => [:file]}}])

но мне это дает:

{
  "id": 2,
  "created_at": "2019-04-24T14:59:08.000-05:00",
  "updated_at": "2019-04-24T14:59:08.000-05:00",
  "event_id": 3,
  "name": "ccccccccccccccccccccccssssss",
  "images": [
    {
      "file": {
        "url": "/uploads/image/file/300aecf6-b3c7-4b15-94a1-45c530efc4c4.png"
      }
    }
  ]
}

Я хочу что-то вроде этого:

{
  "id": 2,
  "created_at": "2019-04-24T14:59:08.000-05:00",
  "updated_at": "2019-04-24T14:59:08.000-05:00",
  "event_id": 3,
  "name": "ccccccccccccccccccccccssssss",
  "images": [
    "/uploads/image/file/300aecf6-b3c7-4b15-94a1-45c530efc4c4.png"
  ]
}

Как я могу это сделать?Есть предложения?

1 Ответ

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

Иногда лучше разбить вещи на более мелкие кусочки ...

# create the query to get all the objects to prevent n+1 queries
banners = Banner.includes(images: :file)

# get the banner you want to serialize
banner = banners.find_by(event_id: @event.id)

# get all the urls for the images as an array
image_urls = banner.images.collect {|i| i.file.url }

# create the json object
json = banner.to_json.merge(images: image_urls)
...