Nếu tôi đi đúng đường thì:
Truy vấn hiện tại
Model.select(:rating)
đang trả về mảng của đối tượng và bạn có truy vấn bằng văn bản
Model.select(:rating).uniq
uniq được áp dụng trên mảng đối tượng và mỗi đối tượng có id duy nhất. uniq đang thực hiện công việc của mình một cách chính xác vì mỗi đối tượng trong mảng là uniq.
Có nhiều cách để chọn xếp hạng khác biệt:
Model.select('distinct rating').map(&:rating)
hoặc là
Model.select('distinct rating').collect(&:rating)
hoặc là
Model.select(:rating).map(&:rating).uniq
hoặc là
Model.select(:name).collect(&:rating).uniq
Một điều nữa, truy vấn thứ nhất và thứ hai: tìm dữ liệu riêng biệt bằng truy vấn SQL.
Các truy vấn này sẽ được coi là "london" và "london" giống nhau có nghĩa là nó sẽ bỏ qua không gian, đó là lý do tại sao nó sẽ chọn "london" một lần trong kết quả truy vấn của bạn.
Truy vấn thứ ba và sau:
tìm dữ liệu bằng truy vấn SQL và cho dữ liệu riêng biệt được áp dụng ruby uniq mehtod. các truy vấn này sẽ được coi là "london" và "london" khác nhau, đó là lý do tại sao nó sẽ chọn 'london' và 'london' cả trong kết quả truy vấn của bạn.
vui lòng thích hình ảnh đính kèm để hiểu rõ hơn và xem "Đã tham gia / đang chờ RFP".