2015-05-11 110 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