- ruby "2.6.3"
- камень "проверено", "4.8.0"
- самоцвет "pg", "0.18.4"
Мне нужно уметь:
- поиск изменений по диапазону дат
- поиск во всех аудитах по диапазону дат, а затем получение самой последней записи каждой записи
В настоящее время ревизия записи имеет ноль для столбцов create_at и updated_at. Я могу report.revision_at(yesterday)
, но не диапазон дат
Так что я попытался изучить ревизии. Я группирую их по auditable_id
, что выглядит как группа по записям. Тогда я получу последнее. Но это только показывает мне, что было изменено:
Audited::Audit.where(auditable_type: "Report")
.where(created_at: 7.months.ago..1.month.ago)
.group_by(&:auditable_id)
.map { |_, v| v.sort_by(&:created_at).max }
В идеале я хочу сделать что-то вроде этого, чтобы получить последние изменения в промежутке времени, который я ищу
Reports.all.map do |report|
report.revisions
.where(created_at: 7.months.ago..1.month.ago)
.sort_by(&:created_at).max
end
Вот что я получаю, когда смотрю на report.revisions. Как вы видите, create_at возвращается ноль, когда просматривает ревизии:
[#<Report:0x000
id: "100f5d9d-",
device: "1-device-118",
advisor: "system",
created_at: nil,
updated_at: nil>]
исходная запись в таблице отчетов имеет create_at и updated_at:
#<Report:0x0
id: "100f5d9d-",
device: "1-device-118",
advisor: "system",
created_at: Fri, 07 Dec 2018 03:15:37 UTC +00:00,
updated_at: Fri, 07 Dec 2018 03:15:37 UTC +00:00>