2015-10-06 62 views
1

我正在使用葡萄和Rails建立一个API。一个端点接收对订单的POST请求。该体系结构如下: 一个Order has_many OrderDetailsOrderDetails has_many OrderDetailCustomFields红宝石葡萄 - 要求方法不工作3级深

因此,我期望POST请求JSON对象将嵌套三个深度的值。 我的代码查找我的订单端点: (裸记住我已经摆脱了大多数其他领域,所以那些谁帮我可以看看参数要求只是嵌套)

params do 
    requires :order, :type => Hash do 
     requires :order_details, :type => Array do 
      requires :order_detail, :type => Hash do 
       requires :cost, type: Integer#, desc: 
       requires :quantity_ordered, type: Integer#, desc: 
       requires :item_id, type: Integer#, desc: 
       optional :order_detail_custom_fields, :type => Array do 
        optional :order_detail_custom_field, :type => Hash do 
         requires :field_name, type: String#, desc: 
         optional :field_value, type: String#, desc: 
        end 
       end 
      end 
     end 
    end 
end 

我有其他有可选数组和可选哈希的端点。如果这些可选阵列或散列中的嵌套字段为要求,则如果请求中存在父参数,葡萄通常只会抛出一个错误。

但是在:order_detail_custom_field的情况下并非如此。一旦我从2个参数级别深入到3个参数级别深度,葡萄就会吠叫我,并且似乎使所有:order_details哈希都需要整个:order_detail_custom_field阵列。即使它是可选的。其他:order_detail没有custom_fields的散列现在出现错误,说明它们需要:field_name代替:order_detail_custom_field

确切的错误是:

{ 
error: order[order_details][order_detail][order_detail_custom_fields][order_detail_custom_field][field_name] is missing 
} 

我能看到的唯一区别是,错误似乎发生于3个层次深,而不是2层深的参数。有人对此有经验吗?或者我忽略了什么?

+1

对于任何人在这个问题上磕磕绊绊,我提交了一个标有“bug?”的github问题。 。我会更新,因为我有更多的信息。 – James

+0

此问题仍在发生。 – juliangonzalez

回答

1

对于任何人在这个问题上磕磕绊绊,我提交了一个标有“bug?”的github问题。据我所知,这个问题仍在按@JGonzalesD进行。