Chcę mieć drzewo. Co jest do polecenia oprócz acts_as_tree?

Przyglądałem się takim opcjom:

  • acts_as_nested_set
  • betternestedset
  • awesome nested set
  • acts_as_tree

Nie wiem jednak jak one zachowują się w użyciu. Optymalizacja zapytań, wydajność, wygoda w użyciu.
Ktoś może coś polecić?

Polecam awesome nested set, to taki betternestedset ale po refaktoringu :slight_smile: Poza tym set to nie tree, wybierz set jeśli chcesz 1 zapytaniem wyciągnąć jakiś subset (szybkość), wybierz tree jeśli nie możesz sobie pozwolić na update całego drzewa podczas zmiany 1 rekordu.

Potrzebuję tej funkcjonalności do komentarzy, które mają mieć możliwość odpowiadania i w związku z tym grupowania wątkami (komentarz + poniżej odpowiedzi do niego) zamiast zwykłego chronologicznego przedstawiania komentarzy. Każde dodanie komentarza wiązałoby się z przebudową całego drzewa? Jeśli tak, to chyba set nie jest dobrym rozwiązaniem. Chyba pozostaje więc tylko acts_as_tree, choć trochę niepokojące jest, że to ma już ponad 2 lata.

Niekoniecznie całego drzewa, możesz skorzystać z opcji :scope i np. budować drzewo komentarzy tylko w ramach danego posta. Update przebuduje wtedy tylko set należący do danego posta a nie wszystkie sety (dla wszyskich postów):

    # * +:scope+ - restricts what is to be considered a list. Given a symbol, it'll attach "_id"
    #   (if it hasn't been already) and use that as the foreign key restriction. You
    #   can also pass an array to scope by multiple attributes.

Przebudowa drzewa nie powinna być problemem w tym przypadku (no chyba że miałbyś setki tysięcy komentarzy średnio do 1 posta co jest raczej nieprawdopodobne).

Skąd to info? Bo na githubie nie ma tego w dokumentacji aplikacji, a chętnie bym więcej sobie o tym poczytał. Ciągle nie wiem na którą opcję się zdecydować.

Hmm, vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb (Configuration options) ???