微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 构建Rails和Backbone.js模型之间的多对多关系

我试图设置一个具有多对多关系的项目模型和标签模型(项目有多个标签标签属于多个项目).我正在使用Rails和Backbone.js,所以我需要让他们在彼此之间无缝地存储,检索和更新模型.如果我可以从客户端一次保存特定项目的新标签列表,我也会喜欢它.

什么是正确的方式来构建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])来做到这一点.困难的部分将是覆盖主干同步来处理成功的创建,并将[标签列表]转换为集合的单个模型.

希望有帮助!

原文地址:https://www.jb51.cc/ruby/272806.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐