난 레일 애플 리케이션에 다음과 같은 모델 쌍을 가지고있어. 그들은 single table inheritance을 사용하여 구현됩니다.부모 콜백이 실행되지 않는 이유는 무엇입니까?
class Parent < ActiveRecord::Base
before_save :callback
private
def callback
puts "executing parent callback"
end
end
class Child < Parent
before_save :callback
private
def callback
puts "executing child callback"
end
end
내가 기록을 저장할 때마다 모두 부모의 callback
와 자녀의 callback
가 발광하는 내가 좋아하는 것,하지만이 동작이 동작하지 않습니다. 현재 Child를 저장할 때 그 클래스에 정의 된 콜백 만 실행됩니다.
Rails docs은 자식 클래스가 작동 될 때 부모 콜백이 자동으로 트리거되어야한다고 말합니다 ("상속 가능한 콜백 대기열"섹션 참조). 이것은 내 코드에서 일어나지 않습니다.
왜 아는 사람이 있습니까?
같은 이름이 붙어있어서 서로 덮어 쓰지 않습니까? 메소드 이름은 parentCallback, : callback 대신 childCallback이어야합니까? – iouri
아. 좋아, 그래서 실제로는'parentCallback'과'childCallback'이라는 콜백 코드를 사용하지 않았습니다. 코드를 S.O에 붙여 넣을 때 콜백 이름을 빠르게 변경했습니다. 왜냐하면 나는 (어리석게) 그것이 더 가독성있는 질문을 만들 것이라고 생각했기 때문이다. –
내가 실제로 달린 코드에서, 두 콜백은 단지'콜백 '으로 명명되었습니다. 나는 그것을 반영하기 위해 질문을 편집했다. 그리고 그게 문제였습니다! 두 개의 동일한 콜백이 서로 덮어 쓰고 있었다고 생각합니다. –