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?

0 ответов

Другие вопросы по тегам