加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:09:43 所属栏目:百科 来源:网络整理
导读:我试图设置一个具有多对多关系的项目模型和标签模型(项目有多个标签和标签属于多个项目).我正在使用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])来做到这一点.困难的部分将是覆盖主干同步来处理成功的创建,并将[标签列表]转换为集合的单个模型.

希望有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读