2009-07-23 12 views
12

Mam dwa modele, TreeNode i użytkownika. Każdy użytkownik has_one TreeNode, który jest korzeniem drzewa.Stowarzyszenia zmiany nazwy szyn

class TreeNode 
    acts_as_tree 
    belongs_to :user 
end 

class User 
    has_one :tree_node 
end 

Chciałbym mieć tę konfigurację tak, że szyny sprawi, że stowarzyszenie tak, że mogę zrobić coś takiego

User.first.tree 

zamiast

User.first.tree_node 

Jak można by zabrać coś takiego?

Odpowiedz

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

Pamiętaj, to zakłada się klucz obcy o nazwie user_id w tabeli tree_nodes.

Edit: Jeśli to nie zadziała, to może trzeba podać klucz obcy (:foreign_key => :user_id), ale nie sądzę.

+0

Dzięki, to działa! Wiedziałem, że jest jakiś łatwy sposób na zrobienie tego. –

3

Najwyraźniej nazwa klasy została zastąpiona przez: source.

+4

Zgodnie z [przewodnikiem stowarzyszenia szyn] (http://guides.rubyonrails.org/association_basics.html), oba: class_name i: source nadal istnieją. : source służy do określenia powiązania źródłowego ': has_one ...: through' –