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ć?
Przyglądałem się takim opcjom:
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 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) ???