2012-06-10 14 views
5

Ho la seguente classe Person che ha un genitore che è anche un'altra persona. Non riesco a capire come far funzionare le relazioni.ha_una relazione con la stessa classe

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 

Ho aggiunto "mom_id" e "dad_id" come numeri interi al mio modello con una migrazione. Tuttavia, quando uso il rails console, io non sono in grado di accedere mom o dad attributi dopo le impostazioni mom_id e dad_id. Restano ancora nil.

Eventuali suggerimenti su cosa sto facendo male?

+0

Se lo fai numero infinito non sarà la persona oggetti essere creato di volte. 'Person1 ha una persona che ha un'altra persona che ha una terza persona e così via ...' – ShaggyInjun

+0

Beh, i database sono così grandi che non possono essere infiniti ... ma in teoria, sì. Questo è solo un semplice esempio del mio caso d'uso effettivo che tuttavia non ha questo problema. – jasonlfunk

+0

'has_one' non significa che un modello deve avere un altro modello. In realtà significa che può avere al massimo un oggetto. – cdesrosiers

risposta

8

Sono d'accordo con @Andrew, questo dovrebbe essere belongs_to

belongs_to :mom, :class_name => "Person", :foreign_key => "mom_id" 
belongs_to :dad, :class_name => "Person", :foreign_key => "dad_id" 
Problemi correlati