2011-06-28 10 views
2

私はawesome_nested_set宝石を使用していますが、あなたがする必要があるのはデータベースにレベルの列を追加するだけで、自動的にレベルが追加されるということです。awesome_nested_set宝石レベルのdbカラム

私は

Subject.rebuild! 

を実行する場合はレベルを作成します。しかし、私は、私は新しいものを作成するとき、それはそれをやってみたいです。

私は次のことも試してみましたが、成功しませんでした。

before_save do 
    self.level = ancestors.count 
end 

おかげ

答えて

0

私はbefore_saveコールバック内self_and_ancestorsにアクセスしようと、ちょうど同様の問題をしました。

問題は、子レコードがDBのレベルでまだ作成されていないということですが、(ちなみに、またancestorsによって参照される)self_and_ancestorsは、私たちの新しい子が既に作成されていることを期待し、DBに問い合わせを。..

キャッチ22。

EDIT:

それは醜いですが、回避策awesome_nested_setのこのlimiationのためとして、これはOPのために働く必要があります(親がすでに存在して提供):

before_save do 
    self.level = self.parent.self_and_ancestors.count 
end