2009-07-23 16 views
12

Tengo dos modelos, TreeNode y User. Cada usuario has_one TreeNode, que es la raíz del árbol.carriles asociaciones de cambio de nombre

class TreeNode 
    acts_as_tree 
    belongs_to :user 
end 

class User 
    has_one :tree_node 
end 

Me gustaría tener esta configuración de manera que los carriles harán que la asociación para que pueda hacer algo como

User.first.tree 

en lugar de

User.first.tree_node 

¿Cómo se podría ir haciendo ¿algo como esto?

Respuesta

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

Tenga en cuenta, esto supone una clave externa llamada user_id en la tabla tree_nodes.

Editar: Si eso no funciona, puede ser que necesidad de especificar la clave externa (:foreign_key => :user_id), pero yo no lo creo.

+0

¡Gracias, eso funciona! Sabía que había una manera fácil de hacerlo. –

3

Aparentemente: class_name ha sido reemplazado por: source.

+4

De acuerdo con [la guía de asociación de rails] (http://guides.rubyonrails.org/association_basics.html), ambos: class_name y: source aún existen. : source es para especificar la asociación de origen de un ': has_one ...: through' –

Cuestiones relacionadas