2014-11-18 3 views
0

로깅 시스템과 함께 작동하는 응용 프로그램이 있습니다. 그러나 로깅 시스템은 잘 설계되지 않았으므로 좀 더 우아한 해결책을 찾고 있습니다.레일 호출이 발생한 곳을 감지하는 모델 논리

다음 필드가있는 내역 모델이 있습니다. idmessageevent. 이 이벤트를 기록 레코드가 생성됩니다 다음 연락처

편집 작업

  • 추가 또는 을 추가 또는 편집 주석
  • 를 추가 또는 편집

    • : 다음과 같은 변경 사항이있을 때마다 History 테이블

      현재 History 모델이 생성되거나 업데이트 된 시점에 event 필드를 수동으로 설정합니다. 때로는 이것은 컨트롤러에, 때로는 모델 after_save 필터에, 코드가 내 응용 프로그램 주위에 흩어져 있습니다.

      event 필드의 설정을 History 모델의 메소드로 통합하는 방법을 찾고 있습니다. 이를 수행하기 위해 내 History 모델은 create 또는 update 호출이 발생한 곳을 감지합니다.

      이것이 가능합니까? 솔루션과 같이 더 나은 "레일"이 있습니까?

  • 답변

    1

    IMO, 잘못된 방법입니다. (2) 태클 될 때

    는 당신이 현재 수행하려고하는 이벤트는

  • 일어난

    1. 로 변환 (1) 할 것입니다 기록 레코드
    2. , 당신은 알아낼 여기서 (2)에 대한 호출은

    대신에 이벤트 유형의 캡처를로드해야합니다. 즉, 이벤트 유형의 캡처를 앞당겨 야합니다. 예를 들어,

    1. 이벤트가 기록 녹화 (1)되어
    2. 일이, 그 안에 여분의 매개 변수는 이벤트
    3. 이제
    4. 당신은 그냥 saave 위해 전달됩니다 다음과 같이 나중에 무언가를 감지. 그것의 자신의 기록을 저장 할 수 있어야하고, 호출 방법은 모든 것을 제공해야한다 - 이상적으로 그것을 호출하는 역사 모델에 문제가되지해야한다 -

    나는이 간단한 Spearation of Concerns에 맞춰 계속 생각 필요한 데이터.

  • 관련 문제