2011-07-19 12 views
4

私はPersonという名前のモデルを持っています。それにはnameとparent_person_idという2つのプロパティがあります。Rails 3 - 1対1の関係を持つモデル - 必要ですか?belongs_to

人は常に親の人がいます。

モデルにbelongs_toを使用する必要がありますか?もしそうなら、そうすることの利点は何か。

class Person < ActiveRecord::Base 
    belongs_to :person 
end 

私はまだこのコードを試していない、私の通常のmysqlの方法は少し間違っているようです。

私は何よりもここで意見を求めています。私はレールには全く新しく、私は物事を正しくやっていることを確認したいと思っています。

答えて

9

このようなツリー構造には、ancestryのような宝石を使うことをお勧めします。それは、あなたの協会と多くのユーティリティメソッド(親、子、兄弟を見つける、サブツリーを検索する)を提供します。

あなたはそれをしたくない場合は、お使いのbelongs_toの関連でこのように見えるように持っている:そのオプションなしで、レールがPERSON_IDの外部キーを探して、それを見つけることはないので、

belongs_to :person, :foreign_key => "parent_person_id" 

火災であなたのCPUを照らしてください エラーメッセージをスローします。

+0

ありがとう、私はあなたが言及した宝石を使用してみます。同じことをやっていないと思っている他のどんなノブについても、私はこれを、ちょっと日付がついた、それを実装する方法のガイドに従うつもりです - http://asciicasts.com/episodes/262-trees-with-ancestry – Finnnn

0

はい、belongs_toです。これは、この関係についてレールに伝えるものであるためです。