5
Mam własny dołączył model:self-join chętny ładowanie rekursywnie?
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
Później chcemy najpierw dokonać połączenia 1 sql porwać wszystkich istotnych uwag, a następnie rekurencyjnie czyni je.
Jak mogę rekursywnie chciwie załadować?
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
Czy nie powinno to być "show_comments (child)"? – Finbarr
O tak, w kodzie są prawdopodobnie literówki, ma to jedynie na celu przedstawienie ogólnego pojęcia o tym, czego chcę. –
Po prostu: nie możesz. Radziłbym, żeby użyć [awesome_nested_set] (https://github.com/collectiveidea/awesome_nested_set) lub [przodka] (https://github.com/stefankroes/ancestry), które są różnymi implementacjami rozwiązującymi ten problem (głęboko zagnieżdżone struktury na pojedynczy stół) –