backbone.js+railsでsaveのときにSyncしてほしくない項目をなんとかする方法
paperclipで管理している画像パスを以下のように取得すると困ることになるかも。
def show data = hoge.find(params[:id]) respond_with data, methods: [:image] end
これで帰ってきたJSONのimageは"/saver_side_path/to/image"なのだけどもsave()を呼んだ時にサーバー側が期待するのはローカルのパスなわけで、このままsaveするとNo handlerがどうこう言われる。
どうしたかというと、saveをオーバーライドしてimageをunsetして対応した。
class MyApp.Models.Hoge extends Backbone.RelationalModel save: (attrs, options) -> this.unset("image") Backbone.Model.prototype.save.call(this, attrs, options) MyApp.Models.Hoge.setup()
ただ、この方法はこういうケース以外だと、どこかで困ったことになるかもしれない。
今回のケースでは、どっちにしろimageの値がサーバサイドと乖離しているんだから問題ないべ、と思ってやったけど、本来だったらmethods: [:image]のメソッドをひとつ被せて名前を変えるべきなのかも。や、そうだろ。やっぱそうする。