Rails 5.1+: отслеживание того, как долго запись находится в стадии / статусе - PullRequest
0 голосов
/ 17 сентября 2018

В целях отчетности я пытаюсь отследить количество времени, в течение которого запись находится на определенной стадии.

У меня типичный 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
...