从数据库中的表中获取一些数据-Ruby on Rails

时间:2019-04-25 02:55:20

标签: ruby-on-rails ruby-on-rails-4

我有我的横幅广告与图片的关联,我需要带所有图片,但只有字段文件,在文件中我有一个仅想获取网址的哈希值

我有此代码:

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 :(得分:0)

有时最好将它们分解成小块...

# 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)