2009-07-23 7 views
12

J'ai deux modèles, TreeNode et utilisateur. Chaque utilisateur has_one TreeNode, qui est la racine de l'arbre.rails renommer les associations

class TreeNode 
    acts_as_tree 
    belongs_to :user 
end 

class User 
    has_one :tree_node 
end 

Je voudrais avoir cette configuration afin que les rails feront l'association afin que je puisse faire quelque chose comme

User.first.tree 

au lieu de

User.first.tree_node 

Comment peut-on aller à faire quelque chose comme ça?

Répondre

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

Gardez à l'esprit, cela suppose une clé étrangère appelée user_id dans le tableau tree_nodes.

Modifier: Si cela ne fonctionne pas, vous pouvez besoin de spécifier la clé étrangère (:foreign_key => :user_id), mais je ne pense pas.

+0

Merci, ça marche! Je savais qu'il y avait un moyen facile de le faire. –

3

Apparemment: class_name a été remplacé par: source.

+4

Selon [le guide d'association de rails] (http://guides.rubyonrails.org/association_basics.html), les deux: class_name et: source existent toujours. : source est pour spécifier l'association source d'un ': has_one ...: through' –

Questions connexes