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