【发布时间】:2013-05-27 00:09:16
【问题描述】:
为了让 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)
但现在属性不再链接到“书”了。更重要的是,我在其他模型上有更多的缓存属性,但在这里它们都混合在一起。我无法想象这是解决问题的最佳方法。有更好的想法吗?
【问题讨论】:
-
我会用
ember-data标记这个问题。 -
@MehulKar 我已经添加了 ember-data,谢谢
标签: ruby-on-rails serialization ember.js ember-data