문제

사용자가 사진을 게시하고 의견을 게시하고 투표하고 다른 많은 작업을 수행 할 수있는 갤러리를 개발하고 있습니다.

이제 사용자가 원하는 경우 모든 데이터를 구독하고 제거 할 수있는 것이 옳다고 생각합니다. 그러나 응용 프로그램을 깨뜨릴 위험이 있기 때문에 그러한 일을 허용하는 것은 어렵습니다 (예 : 의견에 많은 답변이있을 때 어떻게해야합니까? 다른 사용자가 많은 수정을하는 페이지로 어떻게해야합니까?).

사진을 쉽게 제거 할 수 있지만 다른 데이터의 경우 (예 : 의견, 개정 ...) 세 가지 가능성이 있다고 생각했습니다.

  • 관리자에게 할당하십시오
  • "제거 된 사용자"라는 사용자에게 할당하십시오.
  • Mantain the Current Associations (예 : 사용자 ID) 및 사용자 이름 만 바꾸기 만 (예 : "removed-user-24"와 같은 새로운 사용자 이름을 할당하고 "noreply-removed-user-24@mysite와 같은 존재하지 않는 이메일을 할당합니다. .com "

사용자가 계정을 제거 할 수있을 때 따라야 할 모범 사례는 무엇입니까? (특히 레일에서) 어떻게 구현합니까?

도움이 되었습니까?

해결책

이상적으로 시스템에서는 "하드 삭제"데이터를 원하지 않습니다. 내가 아는 가장 좋은 방법과 과거에 구현 한 방법은 "소프트 삭제"입니다. 행이 활성인지 아닌지를 의미하는 모든 데이터 테이블에서 상태 열을 유지하십시오. 생성 된 경우 모든 행은 기본적으로 "활성"입니다. 그러나 항목이 삭제됩니다. 그들은 비활성으로 만들어졌습니다.

"활성 레코드"에 대한 화면 필터 결과에 데이터를 표시하는 모든 선택 쿼리. 이렇게하면 다음과 같은 장점이 있습니다. 1. 데이터 복구가 가능합니다. 2. 데이터베이스 수준에서 예정된 작업을 수행 할 수 있으며,이 작업은 한 번의 낙하를 한 번 삭제할 수 있습니다. 실제로 필요한 경우. (SQL 프로 시저 등) 3. 삭제에 표시하려는 계정, 항목 등을 결정할 수있는 관리자 화면을 가질 수 있습니다.

내가 작업 한 프로드 환경에서는 하드 삭제가 엄격하지 않습니다. 삭제에 대한 감사가 유지됩니다. 그러나 응용 프로그램이 실제로 작다면; 사용자에게 올라갔습니다.

여전히 DB 레벨에서 정기적 인 정리가있는 "가상 삭제"또는 "소프트 삭제"를 제안합니다. 더 빠르게 효율적이고 최적화 된 청소 방법이 될 것입니다.

다른 팁

일반적으로 사용자에게 활성 플래그를 가지고 이런 유형의 문제를 해결하고 사용자를 삭제할 때 단순히 활성화를 설정합니다. 이렇게하면 사용자가 "삭제 된"경우에도 시스템 전체에 참조 무결성을 유지합니다. 비즈니스 계층에서는 사용자가 작업을 수행하기 전에 항상 활성화되어 있는지 확인합니다. 또한 데이터를 검색 할 때 비활성 사용자를 필터링합니다.

일반적으로해야 할 일은 데이터베이스에서 삭제하는 대신 부울 플래그 필드를 추가하고 유효한 사용자에게는 사실이되고 잘못된 사용자의 경우 False를 사용하는 것입니다. 플래그에서 필터에 코드를 추가해야합니다. 또한 가능한 사용자로부터 모든 관련 데이터를 제거해야합니다. 이 플래그의 주요 목적은 링크를 그대로 유지하는 것입니다. 사용자 데이터 이름을 바꾸는 변형이지만 플래그는 쉽게 확인할 수 있습니다.

나는 일반적으로 아무것도 삭제하는 것을 좋아하지 않고 대신 상태를 사용하여 삭제/미공개로 기록을 표시하도록 선택합니다 (즉, AASM IE는 상태 기계 역할을합니다).

나는 이벤트를 사용하여 속성을 업데이트하고 이메일 등을 보내는 데 도움이되는 상태와 이벤트를 선호합니다. 그런 다음 상태를 확인하여 나중에 수행 할 작업을 결정하십시오.

HTH.

사용자 기록뿐만 아니라 해당 사용자와 관련된 모든 정보에 대한 사용자가 구독하지 않은 날짜/시간을 포함하는 날짜 삭제 필드를 넣는 것이 좋습니다. 앱은 무엇이든 표시하기 전에 필드를 점검해야합니다. 그런 다음 삭제 날짜 후 30 일 (선택 시간)에 대한 모든 레코드에 대해 하드 삭제를 실행할 수 있습니다. 이렇게하면 정보가 표시되지 않을 수 있습니다 (아마도 몇 장소에서 앱을 업데이트해야 할 것임), 사용자가 다시 구독 (우발적 또는 재검토) 및 기존 데이터를 삭제할 수있는 예정된 프로세스가 가능합니다. 회원에 대한 모든 정보와 회원 또는 이전 게시 된 데이터 (사진 등)에 대한 관련 의견을 제거합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top