2012-04-03 11 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 1意志ように、第1のカテゴリを作成しますご利用いただけますか?

答えて

3

:parent_id => Company.firstを使用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

オック私はそれについて考えて、私はそれが自動インクリメントではないことを理解します。だから私は2番目または3番目の要素を参照する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

ちょうどあなたのバージョンでの問題は、それがために作成されていないことではない、それは自動インクリメントは、それがIDを与えられていないので、リセットしないということです代わりに:parent_id => 1

+0

私はこの答えを試してみました。ありがとうございました – ruevaughn

関連する問題