我现在初步构想是两个方案:
A. 是建一个多态的 MENU 类,PROJECT,FOLDER,ARTICLE,REPORT 都关联这个 MENU 类,然后用 awesome_nested_set
B. 是在 PROJECT 加一个 MENU 字段,存一个树形结构的 FOLDER,ARTICLE,REPORT 的 JSON 结构,每次前端修改之后,由前端将整个 MENU 的 JSON 结构发给后台存起来
早上本来想回的,访问 ruby-china 一直有问题 我另外开了个帖子反馈,https://ruby-china.org/topics/32167 @huacnlee
@chucai @novtopro @hooopo @huacnlee
需求描述可能有点问题,我修改了一下题目,应该是“如何实现一个层级有限的,支持精确插入 / 修改的树形目录? ”
一开始的选择也是 ancestry ,但需求上要求能够精确插入并记录每一个节点的位置,看了下文档,貌似 ancestry 并不好实现,因为看文档 ancestry 只记录层级,并不记录 position
“◾可以移动某一个 node 插入到 tree 中特定的一个位置,比如将 Report_id3 插入到 Article_id3 和 Report_id1 之间....”
“◾移动某个 Folder 的时候,子级的 Article / Report 全部跟随移动”
现在需求可以做一个妥协,就是一共最多三级,Project 一定是第一级,Folder 一定是第二级,然后 Article 和 Report 必须在某一 Folder 下,这样的话,那种方案又更合适呢? 我感觉是不是都不用使用 tree 的解决方案,使用一个 sort 相关的方案就可以了...
另外,我设想的“百万级”数据是这样的:一万个 Project,每个 Project 下有 100 个节点,然后每个 Project 之间互无关联,这样的话,awesome_nested_set 的性能还会有问题不?
找资料的时候找到一个挺好的几种递归数据方案的对比文章,推荐一下给其它有需要的同学 http://www.gmarik.info/blog/2012/recursive-data-structures-with-rails/
另外....这个编辑器的换行必须是一个段落么?不能挨着换行?
解决了。 原因是 ruby 的 Shellwords.escape 方法不支持 windows. 在 lib/mina.rb加了一点儿代码。解决了,终于可以在windows上使用mina部署啦!
fork 了一份修改的版本 https://github.com/insub/mina 我是菜鸟,能用就行了,别笑话我代码写的烂哈,我其实是个 PM。
@hardywu 主要是搜索了一下论坛里的信息,貌似 mina 和 cap 都用过的,多数在赞扬 mina
@hardywu 你打动了我。。。可否再说明一下?
@ywjno 好的谢谢,这个问题是需要在 ssh 身份验证通过之后才会出现的,这时候 -t 后面的脚本才会被执行。我也奇怪,按说这个问题所有 windows 用户应该都会碰到,github 上也有不少人反映相关的 issue,可能是 mina 现在还是不够流行吧,我是很喜欢它的简洁,所以不想切到 cap 上面去。
@blacktulip 因为开发环境是 windows,虚拟机就需要开虚拟机然后再 pull 一下才能部署,本人又稍微有点强迫症。。。。好吧其实我是希望边打 CF 边写代码写完就部署。。。。
@jwjno 请问你是什么环境?我是 ruby 1.9.3,rails 3.2 (railsinstall 安装包安装的)
我就是那个意思来着.....
能否....把自己喜欢过的,关注过的帖子列出来呢?@huacnlee
@vkill 谢谢~其实之前已经查到资料解决了,忘记关贴了,不好意思。
gem install 也报错才想起来的,之前是 gem install 没事,但是 bundle install 和 bundle update 会报错。
哭,我 ping taobao 源是正常的,所以一直没往这想,折腾了一晚上去查错....
@huacnlee thk~