book = Book.all
c = []
book.each do |b|
ile = b.comments.find_all_with_state(1).count
if ile > params[:ile]
c << b.id
end
w tablicy c bedziesz mial ID ksiazkek. Pewnie nie najlepsze rozwiąznie i nie jest to namedscope ale powinno dzialac. Nie testowane, z palca ale idea powinna byc ok
Pomysł Gotara doskonale zarżnie każdą co większą aplikację
A co do meritum: albo będziesz robił wyciągając Book robił odpowiedni COUNT komentarzy o statusie 1, ale też jest to rozwiązanie okrutne dla bazy (złożoność obliczeniowa).
Ja bym zrobił counter-cache, czyli trzymał w Book licznik komentarzy o statusie 1.
No wiem że wydajnościowo śmierć, ale przy takiej relacji nic lepszego mi do głowy nie przeszło jak przerzeźbić cała bazę i sprawdzać, no ale oczywiście dodatkowa tabela trzymająca licznik komentarzy jak najbardziej. Czy te rozwiązanie z named scope wydajnościowo będzie lepsze? Też chyba musi przemulić cąła bazę?
@Tomash; Nawet używam counter_cach do szukania ksiazek o danej ilosci komentarzy i działa świetnie. Teraz musze dodać szukanie ksiazek o danej ilosci komentarzy w pewnym stanie.
Czy istnieja warunkowe counter_cache i czy prawidłowo zmienią wartość przy zmianie statusu komentarza?
Wtedy od razu jest. np. Book.comments_count_lte
Chyba ze o chodzi o to zebym sobie samemu owego napisal.