Witam.
Nie umiem znaleźć rozwiązania na mój problem, mam sobie w modelu named_scope, które dobrze zwraca tablicę, jednak źle zwraca jej rozmiar…
przykład:
named_scope :published, :joins => :publication_periods,
:group => 'articles.id',
:conditions => ['? between publication_periods.start AND publication_periods.stop', Time.now ]
tablica jest ok i co ciekawe są w niej dwa elementy w moim przypadku, czyli tak jak powinno.
niestety
Articles.published.size
zwraca inną wielkość tablicy. Zauważyłem, że przy tworzeniu zapytania sql gubi mu się “group by”. Może ktoś się z tym spotkał i zna rozwiązanie?
W AR są 3 metody do sprawdzania wielkości kolekcji: count, size i length.
length pobiera kolekcję do pamięci (o ile nie jest pobrana) i zwraca jej wielkość
count wykonuje SQLowe COUNT
size podaje wielkość kolekcji jeżeli jest wczytana, w przeciwnym wypadku robi count
Dlatego jak robisz size wykonuje się tak naprawdę count, który zwraca błędny wynik z uwagi na powyższy bug.
Spróbuj wykonać size na pobranej kolekcji - powinien zwrócić prawidłową wartość.