Rails JSONAPI :: Resources序列化资源

时间:2018-10-27 12:20:43

标签: ruby-on-rails json-api jsonapi-resources

我有一个Grape API,该API具有一个命名空间:admin和一个ride资源,整个路径是 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,我有一个RideResourceUserResource,但是如果我查询端点,它将返回所有属性,因此它不起作用。我知道我可以简单地解析数据并在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兼容的宝石吗?

0 个答案:

没有答案