2009-07-23 9 views
12

私は2つのモデルTreeNodeとUserを持っています。各ユーザーhas_oneツリーのルートであるTreeNode。レールの名前を変更する関連性

class TreeNode 
    acts_as_tree 
    belongs_to :user 
end 

class User 
    has_one :tree_node 
end 

私は

User.first.tree_node 

の代わりに

User.first.tree 

ような何かを行うことができますように、レールがどのように1はやって行くだろう関連付けを行いますように、このセットアップを持っているしたいと思いますこのようなもの?

答えて

23
has_one :tree, :class_name => "TreeNode" 

覚えておいて、これはtree_nodes表にuser_idと呼ばれる外部キーを想定しています。

編集:問題が解決しない場合は、あなたかもしれないは、外部キー(:foreign_key => :user_id)を指定する必要がありますが、私はそうは思いません。

+0

ありがとうございます!私はそれを行う簡単な方法があることを知っていた。 –

3

明らかに、class_nameがsourceに置き換えられました。

+4

[rails association guide](http://guides.rubyonrails.org/association_basics.html)によると、class_nameと:sourceの両方が存在します。 :sourceは ':has_one ...:through'のソースアソシエーションを指定するためのものです。 –

関連する問題