Rails JSONAPI:: Ресурсы сериализации ресурсов
У меня есть Grape API, который имеет пространство имен :admin
и ресурс езды, весь путьhttp://localhost:3000/api/admin/trips
module Admin
class Base < API::Core
namespace :admin do
before { authenticate_admin! }
resources :rides do
mount TripsAPI
end
end
end
end
module Admin
class TripsAPI < Base
desc 'Returns all rides grouped by user ordered by date ascending'
get do
Ride.order(date: 'asc').group_by(&:user)
end
# ...
end
end
Я хотел бы вернуть структуру данных следующим образом:
data: {
[
{email: '...', first_name: '...', rides: [ride1, ride2, ...]},
{email: '...', first_name: '...', rides: [ride1, ride2, ...]}
]
}
Или похожий, легко потребляемый на переднем конце. Я хочу, чтобы все аттракционы были сгруппированы по пользователям и более упорядочены по возрастанию даты. Как я могу получить только несколько атрибутов из пользовательского ресурса и использовать его как пользовательский интерфейс? Я пытался использовать JSONAPI::Resources
, У меня есть RideResource
а также UserResource
однако, если я запрашиваю конечную точку, он возвращает все атрибуты, поэтому он не работает. Я знаю, что могу просто проанализировать данные и создать ответ вручную в Ruby, но мне было интересно, есть ли способ добиться этого с помощью какого-либо сериализатора.
class RideResource < JSONAPI::Resource
attributes :start_address
belongs_to :user
end
Должен ли я положить что-нибудь в routes.rb
? Мои маршруты теперь выглядят так:
mount API::Core => '/'
Я также пробовал именовать ресурсы с помощью администратора, но это не работает.
приложение / ресурсы / администратор / ride_resource.rb
module Admin
class RideResource < JSONAPI::Resource
attributes :start_address
belongs_to :user
end
end
Буду признателен за любые советы, так как я не могу найти хорошую документацию, как это сделать. Должен ли я использовать какой-нибудь другой драгоценный камень, совместимый с Grape?