2013-03-27 2 views
2

내가 발견이해 액티브 :: 자료 클래스 이름

class ActiveRecord::Base 

내가 클래스 이름이 ActiveRecord::Base 나를 위해 그것을 설명해주십시오처럼 될 수있는 방법을 이해하지 못했다, 내가 개념을 받고 있지 않다 .

module ActiveRecord 
    # contents of module 
end 

모듈 ActiveRecord::Base이기 때문에 의미 클래스, 모듈 내부에 정의 할 수있는 정의 할 클래스와 상수에 대한 네임 스페이스를 제공

답변

5

ActiveRecord 실제로 원래 유사하게 정의 된 루비 Module입니다. 그래서 이것은 :: 연산자는 네임 스페이스 내에서 상수를 참조하는 네임 스페이스 확인에 사용되는,

일반적으로
module ActiveRecord 
    class Base 
    # contents of class 
    end 
end 

과 동일합니다. 기술적으로, 대문자로 시작하는 변수는 상수이므로 Base은 클래스 자체의 값을 갖는 상수입니다! 라는 상수 FOOActiveRecord 내에서 정의 된이 있다면 다음과 같이 :

module ActiveRecord 
    FOO = "foo" 
end 

다음의 정규화 된 변수 이름 ActiveRecord::FOO이 될 것입니다.

+0

이제 ActiveRecord :: Base가 openclass라는 것을 알았습니다. – sunny1304

+0

예,'class ActiveRecord :: Base'는'module ActiveRecord;에 대한 속기입니다. class Base'라고 정의하고 클래스를 "열"때문에 클래스 내에 메소드를 정의 할 수 있습니다. –

+0

도움을 주셔서 감사합니다. – sunny1304