2015-05-11 34 views
2

我工作的一个轨道的API与申述,使用下面的宝石:GrapeRoarGrape-Roar选项葡萄申述

现在,我尝试在我申述某些属性,根据添加条件包括(或不包括)在我从我的API端点传递的情况下,如here(注意可表示的宝石被咆哮宝石使用)

我可能忽略了一些东西,但我无法弄清楚如何将选项传递给我的代表,所以我可以根据条件提供属性

例如,在我的葡萄端点的一个我称之为:

present payment_object, with: PaymentRepresenter, include_orders: true

提出的支付对象与PaymentRepresenter。正如你可以看到我想包括支付相关命令一样,所以在我的付款申述我试图做的:

property :order, extend: OrderRepresenter, if: lambda { 
    |args| puts args[:include_orders] #just puts for testing 
} 

然而ARGS [:include_orders]刚才是零

有谁知道我在这里做错了吗?

提前致谢!

回答

4

我有这个问题我自己,我想出了唯一的解决办法是抛弃好的习惯present..., with:...和手动extend我的收藏/纪录申述,像这样的(关于你的例子):

payment_object.extend(PaymentRepresenter).to_hash(include_orders: true) 
+1

谢谢@yaro这完全有效!对于其他人:如果您需要代表环境变量,请确保在to_hash()中包含',env:request.env',就像我一样。为PATH_INFO – PSR