Claves dinámicas de JBuilder para atributos de modelo

Estoy tratando de construir un archivo JSON para acceder a la variación de un producto a través de un código de variación. Idealmente, podría llamar variaciones.abcdefgh esencialmente pidiendo definir una estructura como esta:

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

Hacer algo en products / show.json.jbuilder como

 json.variations @product.variations 

Me da el formato como tal:

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

tal vez mi JavaScript podría ser mejor, pero quiero algo un poco más accesible basado en el product_code. Lo más cerca que he estado ha sido

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

pero aún no he encontrado una solución que ponga estos objetos correctamente formateados como hijos en un atributo de variaciones. ¿Alguien se topa con algo similar antes?

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

^^ esto debería hacerlo