2012-04-03 7 views
1

레일 3 앱을 뿌리려고하고 문제가 발생했습니다. 내 분류 표는 다음과 같은 필드가 있습니다rake db : seed를 사용하여 카테고리 및 하위 카테고리를 만드는 방법

문자열 "이름" 정수 "위치" 정수 "PARENT_ID"

PARENT_ID는 nested_set를 들어, 다른 범주의 ID입니다.

Seeds.rb

Category.delete_all 
Category.create(:name => "Category 1", 
       :position => 1, 
       :parent_id => nil) 

Category.create(:name => "Subcategory 1", 
       :position => 1, 
       :parent_id => 1) 

내가

rake db:seed 

내가 오류 얻을 실행하면 : 그래서

rake aborted! 
Couldn't find Category with id=1 

Tasks: TOP => db:seed 
(See full trace by running task with --trace) 

를, 내가 먼저 카테고리를 만들려면 어떻게해야합니까 ID를 한 것 때문에 는 가능하다?

답변

3

중인 Firefox와 문제는이 순서로 생성되지 않는 것이 아닙니다의 :parent_id => Company.first 사용, 그것은이 ID를 부여하지 않는 자동 증가 그렇게 재설정되지 않습니다이다 1.

시도의 :

Category.delete_all 
first_category = Category.create(:name => "Category 1", 
      :position => 1, 
      :parent_id => nil) 
second_category = Category.create(:name => "Subcategory 1", 
      :position => 1, 
      :parent_id => first_category.id) 
+0

굉장, 그 일했습니다. second_category.id third_category를 계속 참조 할 수 있습니까? 아니면 처음에 요소를 참조하려면 어떻게해야합니까? – ruevaughn

+0

좋아, 나는 그것에 대해 생각해 봤는데 자동 증가가 아니라는 것을 이해한다. 그래서 두 번째 또는 세 번째 요소를 참조하기 위해 ID를 찾아야합니까? – ruevaughn

+0

@ruevaughn 만들고있는 Category.create 문을 변수에 할당 한 다음 해당 변수의 ID를 참조하면됩니다. 내가 사용한 변수 이름은 임의적이다. – JamesSwift

2
Category.delete_all 
parent = Category.create(:name => "Category 1", 
       :position => 1, 
       :parent_id => nil) 

Category.create(:name => "Subcategory 1", 
       :position => 1, 
       :parent => parent) 
+0

나는이 대답을 시도하고는 잘 작동합니다. 감사. 나는 더 많은 설명이 있었기 때문에 다른 대답을 선택했다. – ruevaughn

1

그냥 대신 :parent_id => 1

+0

나는이 대답을 시도하고 잘 작동한다. 감사합니다 – ruevaughn