2014-04-06 6 views
11

, 나는 다음과 같은 한 after_update 콜백에 변화 특성을 가져옵니다 :내가 조건부 after_update를 만들기 위해 노력하고있어

after_update do |participant| 
    Rails.logger.info "#{self.previous_changes} changed." 
    if self.previous_changes.include?(:current_distance) 
     #Do my stuff ... 
    end 
    end 

로거 인쇄 빈 해시 : 속성이있다 {}

는 어떻게 확인할 수 있습니다 변경 되었습니까?

속성을 업데이트하려면 participant.update_attribute(:current_distance, distance)을 (를) 사용하고 있습니다.

답변

16

changes이 아닌 previous_changes을 사용하고 싶습니다. 동일한 저장 트랜잭션에 있으므로 찾고있는 대상은 changes입니다. previous_changes은 업데이트가 완료 될 때까지 정보를 보유하지 않습니다.

5.1.1 레일 :이 새 버전에서 더 이상 사용되지 않습니다으로 saved_changes 대신 changes
사용.

+0

멋진 콘텐츠! 그러나'after_update' 콜백에 도달하면 업데이트가 이미 완료되어서는 안됩니까? – kiddorails

+1

전체 콜백 체인이 완료 될 때까지 업데이트가 "완료"로 간주되지 않습니다. 자세한 내용은 http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html을 참조하십시오. –

관련 문제