我使用这个插件来创建我的树结构。我的数据库架构有点问题 - 我不确定它是否运行良好。 我的数据库表看起来像这样:
+----+---------+-----------+------+------+---------------------+---------------------+
| id | user_id | parent_id | lft | rgt | created_at | updated_at |
+----+---------+-----------+------+------+---------------------+---------------------+
| 1 | 2 | NULL | 1 | 2 | 2011-11-25 18:48:14 | 2011-11-25 18:48:14 |
| 2 | 3 | 2 | 3 | 16 | 2011-11-25 18:49:07 | 2011-11-25 18:49:07 |
| 3 | 4 | 2 | 4 | 7 | 2011-11-25 18:50:56 | 2011-11-25 18:50:56 |
| 4 | 5 | 3 | 5 | 6 | 2011-11-25 18:56:37 | 2011-11-25 18:56:37 |
| 5 | 7 | 2 | 8 | 9 | 2011-11-28 08:44:11 | 2011-11-28 08:44:11 |
| 6 | 8 | 2 | 10 | 11 | 2011-11-28 10:56:26 | 2011-11-28 10:56:26 |
| 7 | 9 | 2 | 12 | 13 | 2011-11-28 16:57:54 | 2011-11-28 16:57:54 |
| 8 | 10 | 2 | 14 | 15 | 2011-11-29 14:01:45 | 2011-11-29 14:01:45 |
+----+---------+-----------+------+------+---------------------+---------------------+
我虽然根项目(ID = 1)会自动更新值 lft 和 rgt ,但在我的情况下不是。我还是不知道,我做错了什么。
以下是我创建项目的过程:
- 创建节点(root):
save_tree = TreeStruct.create!(:user_id => @user.id)
- 根项目下的创建项目:
save_tree = TreeStruct.create!(:user_id => @user.id)
save_tree.move_to_child_of(params[:parent])
在我创建项目的表单中是隐藏输入,此输入具有根项目的值(ID)。
我的问题 - 当我在表格中仍然保持值 lft = 1 和 rgt = 2 时,我做错了什么?不应该是 1 和 16 ?
的值百万次感谢您的帮助,我真的非常渴望这个问题。
答案 0 :(得分:0)
我发现创建后我必须运行 MyModel.rebuild!。这似乎重做了所有的lft,rgt值等。
您似乎也能够在具有后代的类的实例上运行 rebuild 。文档相当不错,我使用以下备忘单解决了大部分问题:
https://github.com/collectiveidea/awesome_nested_set/wiki/Awesome-Nested-Set-Cheat-Sheet