Я делаю веб-сайт с системой ранжирования, аналогичной stackoverflow.В частности, Вопросы могут быть одобрены или понижены.Оценка по Вопросу - это количество положительных голосов минус количество отрицательных голосов.В моей заявке, "Vote" принадлежит: question: question и имеет логическое значение: upvote, чтобы определить, является ли это повышением или понижением.Мне было интересно, могу ли я сделать именованную область видимости для сортировки по баллам.
Эквивалент SQL будет выглядеть примерно так:
SELECT * FROM Вопрос q ORDER BY ((SELECT COUNT (*) FROM Votes)v1 WHERE v1.question_id = q.id AND v1.upvote = true) - (ВЫБЕРИТЕ СЧЕТ (*) ИЗ ГОЛОСОВ v2 WHERE v2.question_id = q.id И v2.upvote = false)) DESC
НоЯ не уверен, как поместить это в Rails.Есть идеи?
Спасибо!