Столбец оконной функции Postgres с Rails - PullRequest
4 голосов
/ 22 сентября 2011

Я бы хотел использовать функцию rank () PostgreSQL для одного из моих столбцов.

Character.select("*, rank() OVER (ORDER BY points DESC)")

Но так как у меня нет столбца ранга в моих таблицах, я не включаю его взапрос.Какой будет правильный способ получить ранг, включенный в мой объект ActiveRecord?

1 Ответ

4 голосов
/ 22 сентября 2011

попробуйте это:

Character.find_by_sql("SELECT *, rank() OVER (ORDER BY points DESC) FROM characters")

он должен вернуть вам объекты персонажей с атрибутом ранга, как описано здесь .Однако, это может не зависеть от базы данных и иметь тенденцию запутываться, если вы передаете объекты.

Другое (дорогое) решение - добавить столбец ранга в вашу таблицу и сделать обратный вызов пересчитать ранг всех записей, используя .order, всякий раз, когда запись сохраняется или уничтожается.

edit:

Другая идея, подходящая для запросов с одной записью, может быть замечена здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...