Я пытаюсь получить из таблицы статистики последнюю запись с последнего дня каждого клиента. Я хочу выбрать клиента с наиболее проданными предметами за последний день.Выберите из числа всех клиентов последнюю запись в Rails
Статистика генерируется каждый час, поэтому у пользователя есть несколько статистических данных, но мне нужен только последний.
Я пробовал несколько команд, я просто получаю ошибки.
Statistic.where("created_at < ?",1.day.ago).select(:customer_id).distinct.order(created_at: :desc)
или
Statistic.where("created_at < ?",1.day.ago).select(:customer_id).distinct.last
является лучшим решением с потрохами? Или я должен создать 2 выбора? Я понятия не имею, где разместить «sold_items».
это тоже может быть решением, но я не уверен.
Customer.all.each do |customer|
stats = customer.statistics.where("created_at < ?",Date.today).last
count = stats.sold_items if stats.sold_items > count
best = customer if count = stats.sold_items
end
Модель: клиент has_many: статистика - статистика belongs_to: клиент
не могли бы вы добавить объявления модели? , чтобы ваш первый запрос работал, вы должны сделать соединение. так что второй. – marmeladze
У вас есть отношение 'has_many'' принадлежит_to' между вашими 'Customer' и' Statistic'? – sa77
Справа. Клиент has_many: статистика и статистика принадлежит_to: customer –