2
메서드가 프로그래밍 방식으로 하위 클래스에 의해 재정의되었는지 여부를 확인하는 방법이 있습니까? 다음과 같이 작동하는 것 :클래스 계층 구조에서 메소드가 정의되고 루비에서 재정의 된 부분을 어떻게 알 수 있습니까?
class BaseModel
def create
puts "superclass"
end
end
class SomeModel < BaseModel
def create
puts "subclass"
end
end
puts SomeModel.overridden_instance_methods #=> [:create]
아이디어가 있으십니까?
그건 절대 아프다. 감사! –
BTW :'SomeModel'의 직접적인 수퍼 클래스를 미리 모른다면'BaseModel' 대신'SomeModel.superclass'를 사용할 수 있습니다. 그렇게하면 재사용 가능한 방법으로이 기능을 패키지화 할 수 있습니다. '클래스 클래스; def overriden_methods; 'SomeModel.overriden_methods' –
SomeModel이 create()를 정의한 모듈을 섞어 놓은 경우를 잡아 내지 못한다는 것을 알아 두십시오. 이 식은 SomeModel이 직접 오버라이드 한 메소드만을 제공합니다. –