2012-06-10 23 views
5

Tengo la siguiente clase Person que tiene un padre que también es otra persona. Parece que no puedo entender cómo hacer que las relaciones funcionen.tiene una relación con la misma clase

class Person < ActiveRecord::Base 
    attr_accessible :mom, :dad 

    has_one :mom, :class_name => 'Person', :primary_key => "mom_id", :foreign_key => "id" 
    has_one :dad, :class_name => 'Person', :primary_key => "dad_id", :foreign_key => "id"  
end 

he añadido "mom_id" y "dad_id" como enteros a mi modelo con una migración. Sin embargo, cuando uso el rails console, no puedo acceder a los atributos mom o dad después de la configuración mom_id y dad_id. Todavía devuelven nil.

¿Alguna sugerencia sobre lo que estoy haciendo mal?

+0

Si lo haces número infinito no la persona puede crear objetos de veces. 'Persona1 tiene una persona que tiene otra persona que tiene una tercera persona y así sucesivamente ...' – ShaggyInjun

+0

Bueno, las bases de datos son tan grandes que no pueden ser infinitas ... pero teóricamente, sí. Sin embargo, este es solo un ejemplo simple de mi caso de uso real que no tiene ese problema. – jasonlfunk

+0

'has_one' no significa que un modelo debe tener otro modelo. En realidad, significa que puede tener como máximo un objeto. – cdesrosiers

Respuesta

8

Estoy de acuerdo con @ Andrew, esto debería ser belongs_to

belongs_to :mom, :class_name => "Person", :foreign_key => "mom_id" 
belongs_to :dad, :class_name => "Person", :foreign_key => "dad_id" 
Cuestiones relacionadas