Jeśli idę od razu, to:
Bieżące zapytanie
Model.select(:rating)
zwraca tablicę obiektów i napisałeś zapytanie
Model.select(:rating).uniq
uniq jest stosowany na tablicy obiektów, a każdy obiekt ma unikalny identyfikator. uniq poprawnie wykonuje swoje zadanie, ponieważ każdy obiekt w tablicy jest uniq.
Istnieje wiele sposobów na wybranie odrębnej oceny:
Model.select('distinct rating').map(&:rating)
lub
Model.select('distinct rating').collect(&:rating)
lub
Model.select(:rating).map(&:rating).uniq
lub
Model.select(:name).collect(&:rating).uniq
Jeszcze jedno, pierwsze i drugie zapytanie: znajdź różne dane według zapytania SQL.
Zapytania te będą traktowane jako „londyn”, a „londyn” to samo oznacza, że zaniedbają spację, dlatego wybiorą „londyn” jeden raz w wyniku zapytania.
Trzecie i czwarte zapytanie:
znajdź dane według zapytania SQL i dla różnych danych zastosuj ruby uniq mehtod. zapytania te uznają „londyn” i „londyn” za różne, dlatego w wynikach wyszukiwania wybiorą „londyn” i „londyn”.
prosimy o dołączenie obrazka dla lepszego zrozumienia i obejrzenie „Toured / Oczekuje na zapytanie ofertowe”.