Лучший способ представить, кто изменил состояние объекта и когда? (AASM) - PullRequest
1 голос
/ 16 ноября 2009

Прямо сейчас я храню пользователя, который последний раз обновлял состояние моей модели в поле state_last_updated_by_id и время последнего обновления состояния в поле state_updated_at. Затем я определяю методы следующим образом:

  def published_at
    return unless state == 'published'
    state_updated_at
  end

  def published_by
    return unless state == 'published'
    state_last_updated_by
  end

  def nominated_for_publishing_at
    return unless state == 'under_review'
    state_updated_at
  end

  def nominated_for_publishing_by
    return unless state == 'under_review'
    state_last_updated_by
  end

Это явно не будет масштабироваться (и не очень хороший подход для начала) - как правильно это сделать?

1 Ответ

0 голосов
/ 16 ноября 2009

Посмотрели ли вы плагин acts_as_audited ?

Это очень просто настроить, и он будет записывать метку времени, изменения и идентификатор пользователя, который запускает обновление / сохранение записи в связанной таблице. Сделать поиск последнего пользователя для изменения состояния очень просто. Он также может быть настроен на запуск только при изменении состояния.

Однако он, вероятно, менее масштабируем, чем ваш текущий метод ведения дел, потому что он будет вести учет каждый раз, когда состояние вашей модели изменяется.

...