У меня есть модель с ассоциацией скачать has_many download_links
Я вызываю download_links в контроллере downloadlink.
def download_links
@downloads = Download.all
render json: { data:@downloads.as_json(:only=>[:id],
include: {
:downloadlink => {:only =>:url}
}
), message:"success"}, status: :ok
end
результат в почтальоне такой:
{
"data": [
{
"id": 1,
"downloadlink": [
{
"url": "1920x1080.png"
},
{
"url": "1366x766.png"
},
{
"url": "1280x720.png"
},
{
"url": "1024x768.png"
}
]
}
],
"message": "success"}
теперь я хочу, чтобы результат был таким:
{
"data": [
{
"id": 1,
"downloadlink": [
"1920x1080.png",
"1366x766.png",
"1280x720.png",
"1024x768.png"
]
}
],
"message": "success"}
Учитывая отношение download has_many download_links
, один из способов сделать это:
def download_links
@downloads = Download.includes(:download_links)
render json: {
data:@downloads.map{ |d| d.download_json }, message:"success"
}, status: :ok
end
В модели скачать.rb
has_many :download_links
def download_json
self.as_json(
only: [:id],
methods: [:downloadlink_list]
)
end
def downloadlink_list
self.download_links.pluck(:url)
end
Исправьте имя/ассоциацию в соответствии с соглашением об именах.
как я могу удалить данные, которые не имеют значения?
{ "data": [ { "id": 1, "downloadlink_list": [ "1920x1080.png", "1366x766.png", "1280x720.png", "1024x768.png" ] }, { "id": 2 , "downloadlink_list": [] } }
Я думаю, вам не следует удалять это, просто подтвердите с командой внешнего интерфейса, если вы удалите атрибут, он может сломаться в конце, потому что они не смогут использовать каждый цикл на нем.
хорошо, сэр, спасибо, кстати, не могли бы вы порекомендовать какую-либо документацию, касающуюся выщипывания и т. д.
Вы можете обратиться guides.rubyonrails.org/active_record_querying.html
Моя передняя часть хочет этого. Так это недействительно?