active_model_serializers
active_model_serializers copied to clipboard
Singularize and capitalize polymorphic types
Singularizing polymorphic association types allows you to use plural or singular type values in your requests as allowed by JSON API.
Because ActiveRecord calls #constantize on the polymorphic association type when you use the hash to create a new model, you must capitalize the type to avoid a NameError.
@dpdawson Awesome! Would you mind adding a changelog entry at the top of the fixes section? Also, a test of an ActiveRecord object using this result would be fantastic, if you don't mind the extra effort.
As I looked into it more, I realized the error only gets thrown when you validate the relationship is present. The fix doesn't cause any of the other tests to fail, so I assume it's ok.
I added a test, but I'm sure it's not the best implementation because I don't use Minitest and the organization of the tests is a bit difficult to discern at first glance.
With a rebase and a brief look at the Transformer with @remear this should be ready to mege
I'd be happy to take a look if pointed in the right direction.
@dpdawson Could you rebase this off master and take a look at adjusting KeyTransform
to suit the needs of singularize.capitalize
.
Any updates on this? Or has the problem been solved in a different way? I'm currently running into this issue.
One note: I don't think the current implementation will work for multi-word classes, given that the standard wordbreak in jsonapi is a '-'
"blog-posts".singularize.capitalize => "Blog-post"
I get this situation here, by now, I solve with hardcoded fix on controller. I made a SO because I had not seen this. Please consider merge it.
@brunowego @bartiaco I'm reading the comments above and looks like the PR didn't get finished by anyone. Unless @dpdawson wants to pick it up again, it'll need to be reworked against master, and also related #1928 cc @NullVoxPopuli