5
Ho un auto incollati modello:self-join eger che caricano in modo ricorsivo?
class Comment < ActiveRecord::Base
belongs_to :parent, :class_name => 'Comment', :foreign_key => 'parent_id'
has_many :children, :class_name => 'Comment', :foreign_key => "parent_id"
end
Più tardi vorrei fare prima chiamata 1 SQL per afferrare tutte le osservazioni pertinenti, e quindi in modo ricorsivo li rende.
Come carico in modo ricorsivo?
comments = Comment.where(:post_id => @post_id).includes(:comments=> [:comments => [:comments .... #How do I get this to recursively eager load?
def show_comments(comment)
render comment
comment.children.each do |child|
show_comments(child)
end
end
Non dovrebbe essere 'show_comments (child)'? – Finbarr
Oh sì, probabilmente ci sono errori di battitura nel codice, è solo pensato per presentare un'idea generale di ciò che voglio. –
semplicemente messo: non è possibile. Vorrei consigliare di usare [awesome_nested_set] (https://github.com/collectiveidea/awesome_nested_set) o [ancestry] (https://github.com/stefankroes/ancestry) che sono entrambe implementazioni differenti che affrontano questo problema (strutture profondamente nidificate su un solo tavolo) –