2011-07-27 2 views

답변

0

Model.send(:valid_scope_name?, scope_name)을 사용하여 해당 클래스에 범위가 존재하는지 테스트 할 수 있습니다. 범위는 Rails 2.x에서는 의미가 있었지만 관계 객체가있는 3.x에서는 더 이상 사용되지 않았습니다.

그래서 그 대신 :

scope :red_ones, where(color: 'red') 

당신은 할 것이다 :

def self.red_ones 
    where(color: 'red') 
end 
+1

나는 valid_scope_name을 사용하지 않았다? logger.warn "범위 생성 : # {name}." "기존 메소드 # {self.name}. # {name} 덮어 쓰기."라는 보호 된 방법이기 때문에 이상한 경고 메시지가 기록됩니다. 나는 내 코드 좋네요을 만들기 때문에 (당신이 제안)이 아니라 방법보다 범위를 사용하려는 나는 그것이 범위인지 문서의 지정이 가능해야한다 같은 경우 테스트 할 수 있어야합니다. – Peder

+0

이 문제는 스코프의 존재 여부를 테스트 한 결과입니다. 내 주장을 'assert klass.scopes.include? (name)'에서 'assert klass.name'으로 변경했습니다. 이것은 위의 질문에 대답하지 않지만 그것은 나를 도왔습니다. 희망적으로 이것은 다른 사람을 돕는다. –

+0

opps. 마지막 코드는 'assert klass.try (name)'이어야합니다. 여기서 'name'은 범위의 이름입니다. –

관련 문제