2014-09-28 2 views
0

Я пытаюсь сделать the Ancestry gem впервые сегодня как часть системы управления контентом и хотел бы иметь возможность создавать узлы и объединять их вместе в дереве вручную. Другими словами, контекст не диктует, что является родителем любого нового узла, в отличие от многих дискуссионных примеров с несколькими потоками, которые все прочитали.Rails Ancestry gem: обеспечение родительского узла существует при сохранении узла

В тот момент, когда я пытаюсь сохранить (создать или обновить) узел с parent_id, который не существует («4»), я получаю ошибку:

ActiveRecord::RecordNotFound in TreesController#update 
Couldn't find Tree with 'id'=4 

Я хочу иметь любые узлы, которые ссылаются на несуществующих родителей, которых не назначают родителям. Как мне это сделать?

Вот соответствующая часть trees_controller.rb:

def create 
    @tree = Tree.new(tree_params) 
    if @tree.save 
     redirect_to trees_url, notice: "Tree was successfully created" 
    else 
     render :new 
    end  
    end 

    ... 

    private 

    def tree_params 
    params.require(:tree).permit(:name, :value, :note, :parent_id) 
    end 

Благодаря

ответ

0

После недели исследований мне удалось выкручиваться. Вот решение для тех из вас, кто столкнулся с одним и тем же препятствием:

def create 
    parent_exists = Tree.exists?(params[:tree][:parent_id]) 
    if !parent_exists 
     params[:tree][:parent_id] = nil 
     note = "Parent node didn't exist so set to nil." 
    end 
    @tree = Tree.new(tree_params) 
    if @tree.save 
     redirect_to trees_url, notice: "Node was successfully created. " + note.to_s 
    else 
     render :new, notice: "There was an error saving this node. Please try again." 
    end 
    end 
Смежные вопросы