Я строю базовую функциональность списка ожиданий для моего проекта.Найти ранжирование записей на основе 2 столбцов
У меня есть модель под названием «Подписчики», которая имеет 2 столбца: «точки» и «created_at». Created_at, очевидно, генерируется, когда запись создается, а точки - целое число, начинающееся с 1.
Когда пользователи регистрируются, они получают код, который они могут использовать в социальных сетях. Каждый раз, когда новый пользователь регистрируется через реферальный код, реферер получает 1 балл.
Мне нужна функция для сортировки подписчиков по точкам и времени, так что, учитывая конкретный подписчик, я знаю, сколько людей у него впереди и позади в списке.
Сложность состоит в том, что я не просто подсчитываю пользователей с большим количеством баллов, но также и пользователей, которые зарегистрировались ПОСЛЕ конкретного пользователя, которого я запрашиваю. Я должен избегать того, что пользователи с одинаковыми точками конкретного пользователя, но которые зарегистрировались намного позже, в конечном итоге впереди.
WaitingList модель
class WaitingList < ActiveRecord::Base
# Database Schema
# t.string "name"
# t.string "uuid"
# t.integer "user_id"
# t.string "status", default: "active"
belongs_to :user
has_many :subscribers
validates :user, :presence => true
validates_presence_of :uuid, :name
end
Subscriber Модель
class Subscriber < ActiveRecord::Base
# Database Schema
# t.string :email
# t.string :name
# t.integer :waiting_list_id
# t.string :code
# t.boolean :referred, default: false
# t.integer :referral_id
# t.integer "points", default: 1
belongs_to :waiting_list
validates :waiting_list, :presence => true
validates_presence_of :email
end
Любая идея, как этого добиться?
Привет, один быстрый вопрос. Какой «БД» вы использовали? –
База данных Postgres –