У меня следующая структура таблицы, в которой я храню элементы дерева:
| 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 является идентификатором родительского элемента.Текущий созданный элемент сохранен в базе данных, но столбец parent_id имеет значение NULL .
Я немного смущаюсь - что я делаю неправильно?Почему я получаю эту ошибку?А как мне создать корень дерева и затем добавить другие элементы?