Mon modèle :post
est le modèle parent. Dans un post sont de nombreux commentaires. Et les commentaires ont le potentiel d'avoir beaucoup plus de commentaires, et ainsi de suite. Je pensais que je l'avais eu ce droit, mais je devais taper:Essayer de faire des commentaires de commentaires. Comment organiser les modèles?
Comment.last.comments
Je reçois:
NoMethodError: undefined method `comments' for #<Comment:0x1053a1ff0>
Mes modèles:
#comment.rb
belongs_to :post
belongs_to :parent, :class_name => 'Comment'
has_many :children, :class_name => 'Comment'
validates_presence_of :text
#post.rb
has_many :comments
accepts_nested_attributes_for :comments, :allow_destroy => true
Ma migration
class CreateComments < ActiveRecord::Migration
def self.up
create_table :comments do |t|
t.text :text
t.integer :post_id
t.integer :comment_id
t.timestamps
end
end
def self.down
drop_table :comments
end
end
+1 pour l'ensemble imbriqué - voir ici: http://github.com/collectiveidea/awesome_nested_set – zetetic
Merci les gars. @zetetic, je suis intimidé par un plugin à cause de sa verbosité. Mais j'ai trouvé Ryan Bates frappé à nouveau avec celui-ci: http://railscasts.com/episodes/163-self-referential-association. On dirait que c'est une référence à la suggestion de C0r0ner. Merci – Trip
C'est juste. Conscient que la sélection de tous les enfants d'un commentaire avec une profondeur illimitée sera une vraie douleur. Donc, si vous avez besoin d'un nombre illimité de commentaires, utilisez l'ensemble imbriqué en dépit de la verbosité – Sigurd