什么是正确的方式来构建Rails端的模型和控制器以及Backbone侧的模型,以保持系统REST,并使它们之间的模型共享变得容易?具体来说,API在服务器上看起来像什么,模型的JSON表示将在保存和检索?
我真的很感激任何关于结构的建议,而且我真的不需要任何代码或实现细节 – 只是一个高级别的设置将是巨大的.谢谢!
解决方法
Backbone有2个模型结构:模型和集合(集合只是模型列表).没有正式的方式描述与骨干(afaik)的关系,所以你必须自己做.我想我将如何处理这个结构将是3个集合:
ItemCollection
项目集合将保存所有项目,并且每个项目反过来都具有自己的TagCollection,其中包含与之相关的标签模型.
ItemCollection.TagCollection
保存对主要TagCollection实例的引用,但是仅此项的本地列表.由于您可以将“模型”添加到集合中,因此可以使用填充相同模型的多个集合.
TagCollection
TagCollection保存您的标签.它是每个ItemCollections TagCollection引用的标签的“主要”列表.
例如:您的TagCollection中有3个标签,以及2个项目.
> item_1.TagCollection包含tag_A和tag_B
> item_2.TagCollection具有tag_A和tag_C
如果,item_1然后添加了tag_C,则只需要:item_1.TagCollection.add(tag_C)同样,删除:item_1.TagCollection.remove(tag_C)将从item_1集合中删除它,但不会将其删除.
不管您使用的方法如何,您需要编写一些代码才能使其进行大规模更新/创建.请记住,在进行同步时,骨干只是将属性列表作为请求正文中的JSON字符串传递.它不在乎它发送什么.所以,只要你的控制器被设置为接受一个列表(1个或更多)就可以了,就可以通过做TagCollection.create([list of tags])来做到这一点.困难的部分将是覆盖主干同步来处理成功的创建,并将[标签列表]转换为集合的单个模型.
希望有帮助!