为了让 Ember 保持专注并最大限度地减少数据传输,我在某些模型上“缓存”了一些属性。示例:因为我只需要作者的名字,所以我将其缓存到书中:
在 Rails 中:书籍 has_one :author 在 Ember 中:书籍 author_name:DS.attr("string")
因此,在 Rails 中,我计算 author_name 并将其与 json 数据一起发送。
现在,如果我尝试将数据发送回服务器,我需要省略缓存的属性。
我尝试在 Book 模型中覆盖“序列化”,但这没有任何效果(这让我觉得奇怪且不合逻辑)。
最终,我覆盖了适配器中的 addAttribute 。所以我现在使用:
adapter: DS.RESTAdapter.extend
serializer: DS.RESTSerializer.extend
addAttribute: (hash, key, value)->
cached_keys = [ "author_name", "more" ]
this._super(hash, key, value) unless cached_keys.contains(key)
但现在属性不再与“书”相关联。更重要的是,我在其他模型上有更多的缓存属性,但在这里它们都混合在一起。我无法想象这是解决问题的最佳方法。有更好的想法吗?