1

특정 모델에 대해 사용자 CRUD 작업을 허용하는 관리 인터페이스가있는 레일 애플리케이션이 있습니다. 클라이언트는 각 모델에 대해 사용자가 무엇을하는지 기록하는 방법을 원합니다. 예를 들어 사용자가 고객 등을 삭제합니다. 해당 고객을 삭제/업데이트/생성 한 사람을 추적하고 싶습니다. 나는 이것을 처리하는 최선의 방법을 숙고하고있다. 이미이 작업을 수행하고있는 보석이 있는지 궁금합니다.레일 3.2 이벤트 로깅

여기 내 생각입니다.

  1. 각 모델에는 created_by 및 updated_by 필드가있을 수 있습니다. 문제 이 (가) deleted_by를 (를) 추적하고 있습니다. 한 가지 방법은 실제 레코드를 삭제하는 대신 고객을 비활성으로 표시하는 것입니다. 귀찮은 것 같습니다 거기에 각각의 모든 모델에서 많은 반복이되고 싶습니다 트랙.
  2. 다음 필드를 추적하는 event_history 모델을 만들 수 있습니다 (아래 클래스 다이어그램). model_record_data 필드는 배열 또는 객체로 저장 될 수 있습니까? 당신은 텍스트로 mysql 필드에 객체를 저장할 수 있습니까? 이 메서드의 이점은 나에게이 모델을 호출하고 내가 만든 모든 모델의 작업을 저장할 수 있다는 것입니다. 또한 누군가가 실수를 저 지르면 이전 상태로 레코드를 복원 할 수 있습니다.

    event_history -> 
        model_name 
        model_record_data 
        action    #create/update/delete etc 
        action_date  #datetime 
        user_id 
    

나는이에 대한 몇 가지 의견을 보내 주셔서 감사하고 도움을 주시면 감사하겠습니다.

답변