-
Notifications
You must be signed in to change notification settings - Fork 255
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Overriding Backbone.sync breaks Rails' strong parameters #188
Comments
Proposed fix in pull request #189. |
I should add that overriding |
This behaviour by the JS patch is very annoying and it seems like that it can be easily fixed by considering options.attrs here: if (model.paramRoot) {
data = {};
data[model.paramRoot] = model.toJSON(options);
} else {
data = model.toJSON();
} Why hasn't this been fixed yet? |
+1 to bump |
Line 19 in backbone_rails_sync.js reads:
It looks like this variable is always overwritten in the next few lines:
So line 19 seems to do nothing. If I'm correct, It's a few CPU cycles gone to waste.
More importantly though,
options.attrs
is ignored. That's bad because it breaks calls like the following:The above should send only
{name: "example"}
rather than the whole attributes hash in the HTTP request. This is very important in Rails, where strong parameters is the officially supported way to whitelist attributes. In Rails, you want to be able to setconfig.action_controller.action_on_unpermitted_parameters = :raise
to catch your own mistakes, but it breaks when backbone-rails forces you to send every attribute with every request.The text was updated successfully, but these errors were encountered: