2013-03-25 2 views
0

이것은 매우 간단한 질문입니다. 액티브 레코드 모델이 인식 방법을 인식하지 못합니다.

def self.nameoffunction 
    ... 
end 

그런 다음 그가보기에 Model.nameoffunction과 방법을 참조 할 수 있었다 : 나는 방법은 같은 모델에 정의 된 railscast을보고 있었다.

2010 년부터 railscast 였으므로, 내 모델에서 함수를 만들려고 할 때 뷰에서 참조하려고 할 때 정의되지 않은 메서드가 생기기 때문에 그 이후로 뭔가가 변경되었다고 생각합니다.

나는의 라인을 따라 내 모델의 방법을 만들기 위해 기대했다 :

def blahblah(variable) 
    a = select('column').where('...variable referenced here...').limit(2) 
    b = [] 
    b.push(a[0]['column']) 
    b.push(a[1]['column']) 
    return b.sum 
end 

내 콘솔과 유형 Model.blahblah 내가 정의되지 않은 오류로 이동합니다.

내 질문에 언제 Model.blahblah에서 메서드를 사용할 수 있으며 메서드를 사용하려면 먼저 Model.find_by_id(3)과 같은 개체를 만들어야합니까?

답변

1

self.을 추가해야 현재 가지고있는 인스턴스 메소드가 아닌 클래스 메소드가됩니다.

class << self 
    def blahblah(variable) 
    a = select('column').where('...variable referenced here...').limit(2) 
    b = [] 
    b.push(a[0]['column']) 
    b.push(a[1]['column']) 
    return b.sum 
    end 
end 
+0

내가 그 시도했지만 아직 정의되지 않은 :

def self.blahblah(variable) a = select('column').where('...variable referenced here...').limit(2) b = [] b.push(a[0]['column']) b.push(a[1]['column']) return b.sum end 

또 다른 옵션은 다음을 수행하는 것입니다? –

+0

reload를 입력하여 콘솔을 다시로드하십시오! –

+0

타이가 맞았습니다. 콘솔을 다시로드해야한다는 것에 대해 전혀 몰랐습니다! 나는 self.blahblah를 백만 번 테스트했고 내 콘솔이 문제라고 결코 생각하지 못했습니다. –

관련 문제