2013-06-26 2 views
2

Mon modèle Event doit avoir une jointure auto-référentielle. Chaque événement peut appartenir à un autre événement. Il y a donc un parent. Un événement ne peut appartenir à aucun autre parent.relation parent-enfant auto-jointure

J'ai lu the AR docs sur le sujet, mais pour une raison quelconque, je me demande quelle relation je devrais utiliser dans mon modèle.

Des suggestions sur quelle relation utiliser?

+0

Quel est votre problème avec la jointure automatique dans le lien? – Matzi

Répondre

6

Pourquoi pas?

belongs_to :parent, :class_name => 'Event', :foreign_key => :parent_id 
has_many :children, :class_name => 'Event' 

Note: Vous devrez ajouter la colonne parent_id au tableau des événements

+2

Dans mon cas, les parents ne peuvent avoir qu'un enfant, mais j'ai trouvé que je devais spécifier la clé étrangère dans 'has_one: child,: class_name => 'Event',: foreign_key =>: parent_id' pour que cela fonctionne. –

+0

Je reçois 'PG :: UndefinedColumn: ERREUR: column events.event_id n'existe pas', 'LINE 1: SELECT" events ". * FROM" événements "WHERE" événements "." Event_id "= ...'. Comment faire pour que les enfants se joignent simplement à 'id' et non à' event_id'? – Meekohi

+0

Utilisez le même 'foreign_key =>: parent_id' sur' has_many'. – Meekohi

-2

vérifier le lien suivant pour la solution.

http://guides.rubyonrails.org/association_basics.html#self-joins 
+0

merci mais j'ai déjà posté ce même lien dans ma question :) –

+1

son ok .. j'ai raté ça :) –