2009-11-16 2 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을 들여다 보았습니까?

설정이 매우 간단하며 관련 테이블에서 레코드 업데이트/저장을 트리거 한 사람의 타임 스탬프, 변경 사항 및 사용자 ID를 기록합니다. 마지막 사용자의 검색 상태를 매우 간단하게 변경합니다. 또한 상태가 변경 될 때만 트리거되도록 구성 할 수도 있습니다.

그러나 모델의 상태가 변경 될 때마다 기록을 유지하기 때문에 현재 수행하는 방법보다 확장 성이 떨어집니다.