나는 많은 클래스 메소드로 정의 된 유틸리티 클래스를 가지고있다. Rails 콘솔에서 Object.const_defined?
을 사용하여 클래스를 검색하면 false를 반환합니다. 그러나 클래스 메서드 중 하나를 호출하거나 클래스의 인스턴스를 만든 후 Object.const_defined?
은 true를 반환합니다. 이것은 일종의 게으른 로딩 인스턴스화 유형 때문에 발생합니까? 아직 인스턴스화하지 않은 경우에도 true를 반환하는 클래스의 존재를 확인할 수있는 또 다른 방법이 있습니까?레일스 인스턴스화되지 않은 경우 클래스의 존재 여부를 확인하려면 어떻게해야합니까?
4
A
답변
5
6
당신은 safe_constantize을 사용할 수 있습니다 false를 반환합니다 작동합니다.
your_class = "YourClassName".safe_constantize
if your_class && your_class.class == Class
your_class.new(options).run
end
그냥 열심히 시도해보십시오. 클래스가로드되지 않은 경우로드되지 않았습니다 (예 : http://stackoverflow.com/q/19839847/438992 –
). 감사합니다. 정보를 보내 주셔서 감사합니다. 더 잘 이해할 수 있습니다. – zako42