У меня есть 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 => '/'
Я также пытался распределить ресурсы по именам с помощью admin, но это не работает.
app / resources / admin /ride_resource.rb
module Admin
class RideResource < JSONAPI::Resource
attributes :start_address
belongs_to :user
end
end
Буду признателен за любые советы, так как не могу найти хорошую документацию, как это сделать.Должен ли я использовать какой-нибудь другой драгоценный камень, совместимый с Grape?