2012-06-19 2 views
1

임의의 모델 메서드에 대해 활성 레코드 콜백을 설정할 수 있습니까? 제어기에서 before_filter와 유사하게 이것이 유용 할 수있는 방법을 알 수 있습니다.임의의 모델 메서드에 대해 활성 레코드 콜백을 설정할 수 있습니까?

이 방법이 있습니까?

+0

이러한 콜백이 있는지도 묻고 있습니까? 왜냐하면 예! 그들이하다! 여기에 당신을위한 목록이 있습니다! http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html – MrDanA

+0

아니요 전통적인 방법이 아닌 save, create 등의 콜백을 설정할 수 있는지 묻는 것입니다. 예를 들어, before/after purchase.submit 메소드에 대한 콜백 ... – pixelearth

+0

만약 당신이 메소드를 소유하고 있다면 (즉, 직접 구현하면), 거기에 코드를 붙여 넣을 수 있습니다. 그렇지 않으면 Ruby 별칭을 조회 할 수 있습니다. – MrDanA

답변

1

활성 모델 콜백은 모든 클래스가 콜백과 같은 액티브 레코드를 가질 수있는 인터페이스를 제공합니다. 여기에서 확인할 수 있습니다 http://api.rubyonrails.org/classes/ActiveModel/Callbacks.html

그리고 이것은 모델의 임의의 방법에 대해 작동합니다. 다음은 코드 스 니펫입니다.

class MyModel 
    extend ActiveModel::Callbacks 
    define_model_callbacks :initialize, :only => :after 

    after_initialize :update_info 

    def initialize 
    run_callbacks :initialize do 
     # Your create action methods here 
    end 
    end 

    def update_info 
    puts 'info' 
    end 
end 

이 방법을 "초기화"마무리 후 "update_info"방법을 호출합니다.

관련 문제