2009-09-27 7 views
4

Je suis un total Ruby/Rails/AR noob. J'ai un schéma de base de données très basique que je n'arrive pas à trouver la meilleure façon de représenter dans Rails Way. L'idée ici est que les messages de premier niveau auront un parent qui est NULL. Chaque réponse aura un parent, de sorte qu'ils forment des fils naturels.ActiveRecord - Associations auto-référencées

Le titre, l'auteur, le contenu et posté Je n'ai pas de problèmes avec mais le parent me fait trébucher. Toute aide, des conseils ou des suggestions serait génial!

Répondre

1

Jetez un oeil à l'act_as_tree plugin, il fournit un tas de méthodes qui gèrent les relations pour vous. Railscasts a un screencast sur Tree Based Navigation qui vaut le coup d'oeil.

+0

En outre, au lieu d'utiliser un champ appelé 'posted' si vous l'appelez' created_at' les rails le peupleront automatiquement avec l'heure actuelle lors de la première sauvegarde de l'enregistrement. – fractious

+0

Cela m'a sauvé beaucoup de travail (malheureusement/heureusement, en savoir plus sur ActiveRecord devra attendre) – Drew

7

Votre modèle Post devrait déclarer vers le haut:

belongs_to :parent, :class_name => 'Post' 

Puis, en utilisant une migration, mettez à jour votre posts table afin que chaque ligne peut suivre son parent:

add_column :posts, :parent_id, :integer 

Maintenant, quand vous avez un objet Post appelé @post, vous pouvez référencer son parent avec @post.parent.

+0

Serait-ce aussi simple que has_many: replies,: classe_name => 'Post' pour l'autre moitié du one-to-many? – Drew

Questions connexes