2012-07-25 1 views

답변

3

Module 안에이 작업을 수행하고 있습니까? 그렇다면 표준 라이브러리에서 Array을 확장하는 대신 별도의 Array 클래스를 정의해야합니다.

확장은 최상위 수준에, 또는 다른 기록 확인 :

class ::Array 

(그런데, 당신이 그렇지 않으면, 내가 것 루비 1.8.7를 사용하려는 이유 좋은 이유가있다

+0

나는 이것을 틀리게 설계하고 구현 한 레일즈 프로젝트 (2.3.5)를 상속하고, 물건을 떨어 뜨리는 것에 대해 업그레이드했다. 배열 확장은 모델 클래스에서 정의됩니다. :: Array가 작동하여 전역 범위로 이동하면 확장 메서드가 작동을 멈 춥니 다. 메서드는 다음과 같이 사용됩니다. MyActiveRecord.find (criteria) .my_function – batkuip

+0

"find"가 배열을 반환합니다. 그러면 왜이 기능이 작동하지 않습니까? 오류 메시지가 "잘못된 인수 수 (1은 0)" – batkuip

+0

아! 아니요,'ActiveRecord :: Base.find'가 배열을 반환한다고 생각하지 않습니다. Rails 콘솔에서'Model.find (criteria) .class'를 검사 해보십시오. 클래스가 리턴 한 것이 무엇이든간에 그것에 대한 확장 메소드를 정의하십시오. 별도의 클래스를 정의하지 않도록하십시오. –

관련 문제