Позиция пользователя в Ruby on Rails, Devise gem - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу отобразить позицию пользователя на странице show.Например, «Ваша позиция 1921 из 195119».Есть ли эффективный способ сделать такую ​​вещь в devise gem?

Моя идея заключалась в том, чтобы добавить дополнительный столбец внутри таблицы users и сделать его автоматическим приращением для каждой записи.Тем не менее, я думаю, что есть лучший способ сделать это.Большое спасибо за вашу помощь и время.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Если у вас есть столбец для позиции, вам, вероятно, потребуется обновить его, если некоторые записи будут удалены.

Вы можете выполнить два запроса подсчета, учитывая объект user.

count_1 = User.where("id <= ?", user.id).count

count_1 - это позиция пользователя

count_2 = User.count

count_2 - это общее количество позиций

0 голосов
/ 31 декабря 2018

В ваших пользовательских моделях есть количество записей, и они хранятся с id, который уже автоматически увеличивается.Добавление position, аналогичное id, бесполезно.

Этого можно добиться, следуя какому-либо количеству ваших записей, которые использовались для удаления, и вы хотите получить позицию в соответствии с существующими записями.

@position = User.all.ids.sort.index(@user.id)

Здесь @user - это объект, для которого вызывается действие show для получения @position

...