2013-01-03 1 views
1

이것은 충분히 간단합니다.리소스 경로가 Mongoid 문서를 삭제하기 위해 삭제 또는 삭제를 사용합니까?

일부 정리 작업을 수행하기 위해 mongoid의 'after_destroy'콜백을 사용하려고합니다.

class Model 
    include Mongoid::Document 

    after_destroy do |model| 
     #Do cleanup stuff 
    end 
end 

몽고에서 개체를 제거하는 2 가지 방법이 있습니다. 삭제 및 삭제. Destroy는 콜백을 실행 하나 삭제는 실행하지 않습니다.

모델의 루트

은 다음과 같이 선언

resources :models 

사람이 모델에 요청을 보낼 때 그래서 제 질문은,/소멸 메서드가 호출 또는 삭제 방법됩니까 삭제할입니까?

후자의 경우 mongo에서 delete 함수를 사용하여 콜백을 실행할 수있는 방법이 있습니다.

답변

1

resources :models에서 생성 된 삭제 방법은 모델에 사용 된 방법과 직접적인 관련이 없습니다. HTTP 삭제는 다음 방법을 호출합니다.

class ModelsController < ApplicationController 

    def delete 
    model = Model.find(params[:id]) 
    model.destroy 
    redirect_to models_path, notice: "Model removed" 
    end 
end 

필요에 맞게 컨트롤러에서 "삭제"를 "삭제"로 변경할 수 있습니다.

+0

나는 이미 비슷한 것을 가지고 있습니다. 도움을 주셔서 감사하지만 '/ 모델/삭제'경로가 다른 기능을 사용하도록 '만드는 방법'을 묻는 것은 아닙니다. 나는 단지 함수의 어느 것이 기본적으로 호출되는지 알아 내려고하고있다. 내 경로 파일에 'resources : models'을 사용하고 있으므로 ModelsController가 비어 있습니다. Ergo, delete 함수는 ApplicationController에 의해 처리됩니다. 나는 ApplicationController가 기본적으로 delete를 호출하고 있다고 생각했을 것이다. ApplicationController 또는 ActionController에 대한 소스를 통해 읽으려고했지만 자세한 정보가 어렵습니다. 좋은 대답! – Overtone

+0

기본적으로 아무 것도 호출되지 않습니다. 메서드가 컨트롤러에 없으면 상속 된 리소스 (https://github.com/josevalim/inherited_resources)를 사용하지 않는 한 모델이 삭제되지 않습니다 –

+0

또한 경로는 "/ models/delete"가 아닙니다 .../models/56에 대한 DELETE http 호출 (모델 ID가 56 인 경우) –