문제

나는 그것을 가지는 것이 매우 중요"취소"방법 ala gmail 파괴하고 기록을 표시하는 팝업 창에는 말하기를,"하시겠습니까?".

는 방법으로 구현했는"deleted_at"timestamp 열에 모델을 가져오는 경우 타임 스탬프가 파괴 방법은 불

def destroy
  @foo = Foo.find(params[:id])
  @foo.update_attribute(:deleted_at, Time.now)
  ...
end

하기 되돌리/취소 나는 단지 동일하게 설정하려면 열 nil

def revert
  @foo = Foo.find(params[:id])
  @foo.update_attribute(:deleted_at, nil)
  ...
end

나는 단지 조건을 추가하려면 필터 떨어져"삭제"foos 때 내가 찾는 방법입니다.아마도 설정 cron 또는 백그라운드 작업은 정말을 파괴하"삭제"foos 수 있습니다.

나를 위해 일하고 구현하기가 쉽지만 내가 궁금하군요가 있다면 더 나은 방법으로 구현하는 이 기능이?어쩌면이 플러그인이나 보석이 제공하는 이는 나는지에 대해 알아?

도움이 되었습니까?

해결책

실제로 찾을 수있는 플러그인이 있습니다. 민첩한 웹 개발.

다음은 설명과 일치하는 플러그인의 링크 및 요약입니다.

  1. 편집증 역할을합니다: 활성 기록을 "편집증"로 만드십시오. 삭제하면 행이 삭제되지 않지만 deleted_at 필드를 설정하십시오. 삭제 된 레코드를 건너 뛰기 위해 찾기가 과부하되었습니다.
  2. 소프트 삭제 가능한 역할을합니다: activeRecord 모델을 부드럽게 삭제하는 기능을 제공합니다.

다른 팁

파일이 있습니다 여기 그것은 당신이 요구하는 일을하는 것처럼 보이지만, 개인적으로 나는 당신이 구체적으로 포함하지 않는 한 삭제 된 레코드를 자동으로 걸러내는 무언가가 있어야한다고 생각합니다. 이렇게하면 매개 변수 또는 리치를 포함하는 이름의 범위를 포함하지 않으면 실제로 삭제 된 것처럼 보입니다.

불행히도, 나는 하나를 쓰지 않았고 여가 시간은 제한되어 있지만 그렇게 어렵지 않아야합니까?

이동할 수 있는 삭제된 항목으로 별도의 컬렉션(또는 테이블,또는 어떤)-다음 보이는 아무것도에서 원래의 목록을 볼 것이는 삭제되었고 처리할 수 있습니다 새로운 목록할 때 편리합니다.

페이퍼 트레일 이것을 멋지게합니다. 좋은 것이 있습니다 Railscast 그것에, 그것은 지금 조금 늙었지만. 나는이 질문이 꽤 오래 전에 질문을 받았다는 것을 알고 있지만 호기심에서 우연히 발견했으며 최신의 멋진 방법을 언급해야한다고 생각했습니다.

책임 체인 패턴

class Action
{
  Perform(context);
  Undo(context);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top