I've got a big problem. I've got some code doing a REST API, outputting JSON, that works fine and hasn't been touched in like 9 months. I've also got a client out there in the wild that I can't touch, so I can't muck with the API at all.
However in a recent bugfix update I"ve discovered that Rails has changed a great deal under me, deprecated a lot of stuff, and I'm needing to bring the code in line with modern expectations. That's fine. Where I'm stuck is my json rendering all changed.
Say that I've got an array of Scholarship objects with id, name, etc... When I asked to render the json of an array of scholarships previously I would get:
[{"scholarship":{"id":2, "name":"foo"}}, {"scholarship":{"id":3, "name":"bar"...
in short, an array of key value pairs where I had to iterate over the array and start by saying x["scholarship"] to get at the data.
After update what I'm getting is:
[{"id":2, "name":"foo"}, {"id":3, "name":"bar"...
no root elements. Using the active record serializers I've gotten some flexibility in specifying the root element, but now I either end up with the above (no root element) or:
{"scholarships":["scholarships":{"id", 2....
where I get a root element for the whole Array that is then added to every element.
Is anybody still with me and can help me unwind this? When rendering the json for a scholarhip I need to specify the "scholarship" root tag ... and when rendering a collection of Scholarships I need to be able to override and NOT show a root tag?
As noted I can't change the client. so if my resulting JSON is not identical to what it's always been I've got a real problem!