모델 저장 후 실행되는 레일에 콜백 함수를 생성하고 싶습니다.모델에서 속성 변경을 감지하는 방법은 무엇입니까?
나는 거절이 모델하는 속성 가능한 값 승인, 승인, 보류중인 주장의 상태에 따라 변경 '상태'를 가지고 주장을,이 데이터베이스는 기본적으로 '상태'가
값은 '보류 중'입니다.
모델이 처음 생성되거나 특정 상태가 변경된 상태에 따라 특정 상태로 업데이트 된 후 특정 작업을 수행하고 싶습니다.
이after_save :check_state
def check_state
# if status changed from nil to pending (created)
do this
# if status changed from pending to approved
performthistask
end
내 질문은 어떻게하는 모델 내의 변경 전의 이전 값을 확인합니까된다
내 생각은 모델의 기능을 가지고있다?
그가 요청한 모델을 저장 한 후에는 작동하지 않습니다. –
@TomRossi,'dirty' 호출은'after_save'에서 작동합니다 (레일즈 2.3과 3.x 모두). 나는 그것을 여러 번 사용했다. –
@TomRossi, 커밋 후 더티 플래그가 재설정되므로 Rails 3.x에 도입 된'after_commit' 콜백에서 사용할 수 없습니다. 그들은'after_save'에서 확실히 작동 할 것입니다. –