Grape api - 如何发布嵌套资源?

Fab*_*uda 2 ruby-on-rails grape-api

所以,我有这个系统我正在使用 rails 4 和 Grape Api。基本上,它汇总了有关在车辆上执行的维护服务的信息。我的模型定义如下:

# service.rb

class Service < ActiveRecord::Base
  has_many :service_items


#service_item.rb

class ServiceItem < ActiveRecord::Base
  belongs_to :service
Run Code Online (Sandbox Code Playgroud)

我实现了一个 API,以便外部应用程序可以在我的系统上发布服务。每个服务都有一个关联的 1 个或多个服务项目的列表。我有一个类似的路由:example.com/api/v1/services for POST。我的问题是如何让它接受带有 service 属性和嵌套在它上面的 service_items 属性的帖子?

我阅读了 Grape 文档并开始了这样的事情:

#service_providers_api.rb

resource :services do
    desc "Post a Service"
    params do
      #requires :category_id, type: Integer
      requires :description, type: String
      requires :plate, type: String
      requires :mileage, type: Integer
      requires :date, type: Date
      optional :cost, type: BigDecimal

      requires :service_items do
         requires :description, type: Integer

      end
    end

    post do
      .
      .
      .
    end

 end
Run Code Online (Sandbox Code Playgroud)

但我不确定如何安装帖子数据以使其正常工作。是否可以像这样在一个请求中完成所有这些,还是我必须将每个请求分开?例如,一个 POST 来接收服务,然后是针对每个相关 service_item 的一系列 POST。在这种情况下推荐的最佳方法是什么?

Dav*_*han 5

params do
  requires :service_items, type: Hash do
    requires :description, type: Integer
  end
end
Run Code Online (Sandbox Code Playgroud)

需要两个参数,你必须提供一个类型。在你的情况下是一个哈希