В целях отчетности я пытаюсь отследить количество времени, в течение которого запись находится на определенной стадии.
У меня типичный has_many :through
.
class Record < ApplicationRecord
has_many :record_stages
has_many :stages, through: :record_stages
end
class RecordStage < ApplicationRecord
belongs_to :stage
belongs_to :record
end
class Stage < ApplicationRecord
has_many :record_stages
has_many :records, through: :record_stages
end
Это приводитк ситуации, когда record
имеет несколько record_stages
, отмечая, что record
может находиться на одной и той же стадии несколько раз:
- запись 1
- record_stage 1
- record_stage 2
- record_stage 1
- record_stage 3 (текущий)
Вопрос
Что я пытаюсь решить, так это подсчитать, сколько времени record
провел в каждом из record_stages
?Если запись была на одной и той же стадии несколько раз, мне нужно, чтобы они суммировались для общего времени на каждой стадии.
Я пытаюсь выяснить, есть ли какой-нибудь элегантный способ использовать временные метки на record_stage
чтобы отслеживать, сколько времени прошло на каждом этапе.
Конечным результатом будет таблица табличного отчета, в которой я перечислю каждый record_stage
и средние значения, потраченные на каждом этапе.Обратите внимание, что запись может быть не на всех этапах.
- record_stage 1: 4h
- record_stage 2: 2h
- record_stage 3: 7h