Ruby 很棒的嵌套集-如何放置这些项目?
我有以下表格结构,其中我存储了树的项目:Ruby 很棒的嵌套集-如何放置这些项目?,ruby,ruby-on-rails-3,tree,root,nested-sets,Ruby,Ruby On Rails 3,Tree,Root,Nested Sets,我有以下表格结构,其中我存储了树的项目: | id | int(11) | NO | PRI | NULL | auto_increment | | user_id | int(11) | YES | | NULL | | | parent_id | int(11) | YES | | NULL | | | lft | int(11) | YES
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | YES | | NULL | |
| parent_id | int(11) | YES | | NULL | |
| lft | int(11) | YES | | NULL | |
| rgt | int(11) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+----------+------+-----+---------+----------------+
在我创建一个新项目到树结构的表单中,我在一个隐藏的输入中有一个新项目,它总是我刚刚创建的项目的父项
在控制器中,我执行以下操作:
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
save_tree = TreeStruct.create!(:user_id => @user.id)
save_tree.move_to_child_of(params[:parent])
format.html { redirect_to(root_url, :notice => 'OK.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
但是,当我尝试创建并将项目添加到此树时,总会出现以下错误:
Couldn't find TreeStruct with id=28
编号28是父项的ID。保存到数据库中的当前创建的项,parent\u id列的值为NULL
我有点困惑——我做错了什么?为什么我会犯这个错误?以及如何创建树的根,然后添加其他项