用于模型属性的JBuilder动态键

我正在尝试构建一个JSON文件,以通过变体代码访问产品的变体。 理想情况下,我可以调用variations.abcdefgh,基本上要求定义这样的结构:

{ "variations":{ "abcdefgh":{ "available":true, "price":"12.00" }, "ijklmnop":{ "available":false, "price":"25.00" } } } 

在products / show.json.jbuilder中做一些事情

 json.variations @product.variations 

给我格式化如下:

 { "variations":[ { "available":true, "price":"12.00", "product_code":"abcdefgh" }, { "available":true, "price":"25.00", "product_code":"ijklmnop" } ] } 

也许我的JavaScript可能会更好,但我想要一些基于product_code更容易访问的东西。 我得到的最接近的是

 @product.variations.each do |variation| json.set! variation.product_code, variation end 

但我还没有找到一个解决方案,将这些正确格式化的对象作为子项放入变体属性中。 有没有人遇到过类似的事情?

 json.set! :variations do @variations.each do |variation| json.set! variation.product_code do json.(variation, :available, :price) end end end 

^^这应该这样做