2009-11-16 3 views
1

Прямо сейчас я сохраняю пользователя, который в последний раз обновлял состояние моей модели в поле state_last_updated_by_id и время, когда оно было в последний раз обновлено в поле state_updated_at. Тогда я определить методы, как это:Лучший способ представить, кто изменил состояние объекта и когда? (AASM)

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 

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

ответ

0

Вы заглянули в acts_as_audited plugin?

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

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

Смежные вопросы