2014-01-07 3 views
0

깨끗한 레일 4.0.2 및 루비 2.0.0p353 프로젝트가 있습니다.레일 4 정의되지 않은 공개 모델 ActiveModel

활성 모델, Foo이 있습니다.

나는

콘솔에서 Foo.bar를 호출, 그것은 "NoMethodError 정의되지 않은 메서드 '바'오류가 발생에 문자열"Hello World "를 출력 라는 공공 방법을 정의했다. " 내가 모델을 확인하신

는 방법은 모델이있는 경우에 의하면, 내가 거짓 수익을 얻을

사실

Foo.ancestors.include?(ActiveRecord::Base) 
을 반환 액티브 :: 자료의 조상

Foo.methods.include?(:bar) 

나는 그 방법이 왜 포함되지 않는지 어색하게 생각한다. 어떤 아이디어? 콘솔을 다시로드하고 다시 시작했으며 코드가 저장되었는지 확인했습니다.

+0

우리가 추측하고있는 코드가 전혀 없습니다. –

답변

1

어떻게 정의 했습니까? 당신이

class Foo 
    def bar 
    "hello" 
    end 
end 

로 정의 된 경우 다음 barFoo 클래스의 인스턴스 메소드 떨어져 있음을 알아 당신은뿐만 아니라 클래스에 Foo의 인스턴스를 호출 할 수 있습니다하십시오. 당신은 클래스 메소드를 정의

class Foo 
    def self.bar 
    "hello" 
    end 
end 

Foo.bar 
# => NoMethodError 
Foo.new.bar 
# => "hello" 

반대로,이 경우 (self주의).

Foo.bar 
# => "hello" 
Foo.new.bar 
# => NoMethodError 
+0

죄송합니다. 부끄러운 일이었습니다. 완전히 클래스 메소드 -_-로 정의하는 것을 잊어 버렸습니다. 알림 주셔서 감사합니다! – Viet

관련 문제