2013-09-03 40 views
6

Tôi có một bảng xếp hạng mà tôi tạo ra với:Tìm vị trí trong đối tượng kỷ lục hoạt động

QuizuserAnswer.all(:include =>:user, :select => 'user_id, SUM(answer) AS points', :group =>'user_id', :order=>'points DESC' 

này trả về một đối tượng như thế này:

=> [#<QuizuserAnswer user_id: 340>, #<QuizuserAnswer user_id: 348>] 

Bây giờ tôi muốn tìm vị trí bảng xếp hạng của một người dùng cụ thể. Có cách nào sạch sẽ không? hoặc tôi phải lặp qua các cột al?

+0

Ý anh là gì bởi _định vị của một người dùng cụ thể_? – Vucko

+0

Bạn đang sử dụng cơ sở dữ liệu nào? – techvineet

+0

Nếu bạn đang sử dụng MySQL, hãy theo liên kết này http://stackoverflow.com/q/3126972/1460496 – techvineet

Trả lời

11

Từ rất ít tôi đã nhận câu hỏi của bạn tôi nghĩ rằng bạn muốn một cái gì đó như sau

answers = QuizuserAnswer.all(:include =>:user, :select => 'user_id, SUM(answer) AS points', :group =>'user_id', :order=>'points DESC') 
user_id = 348 
answers.map(&:user_id).index(user_id) #This will return 1 

tức Nó sẽ trở lại vị trí của các câu trả lời được đưa ra bởi người dùng trong danh sách các câu trả lời của

+0

chính xác những gì tôi muốn. cảm ơn! – flyte321

+0

@ flyte321: - Chúc mừng, hãy nhớ một điều nó sẽ trả về 'nil' nếu' user_id' không có trong 'answer' – Salil

+0

Điều này thực sự giải quyết được vấn đề của tôi khi cố tạo nút" tiếp theo "trong bộ sưu tập bản ghi hành động với phạm vi – dannio

Các vấn đề liên quan