스코프 :오류 (이름)이 이렇게 나와 함께 베어 복잡한 예입니다
을 나는 정기적으로 내 dev에 테스트 데이터베이스 내 테이블을 쓸어 것이다 DEV 동안 사용하는 스크립트를 가지고, 다시 이주 그런 다음 다시 시드하십시오. 두 곳에서 트리거를 사용하기 때문에 rake db : RAILS_ENV = test를 마이그레이션하여 테스트 데이터베이스를 올바르게 마이그레이션해야합니다.
내 테스트 환경에서 config.cache_classes = true를 설정하기 전까지는 문제가 없습니다. 그런 다음 레이크 마이그레이션이 빈 데이터베이스에서 실행될 때 테이블이 존재하지 않는 방법에 대한 오류가 발생합니다.
scope :find_by_route_and_date, lambda { |route_id, date|
{
:conditions=>{:route_id=>route_id, :schedule_date=>date}
}
}
, 범위는 람다에, 그래서 평가 받고되어서는 안하지만하십시오 --trace 이것을 실행, 나는 그것이 기본 범위를 선언 할 때의 내 개체 중 하나에 날려 것을 발견 cache_classes를 제거하면 마이그레이션이 올바르게 작동합니다. 그래서 나에게 모델 캐시를 시도하는 것처럼 보입니다. 테이블이 아직 존재하지 않아 범위를 질식 시키며 마이그레이션을 시작하지 않기 때문입니다.
나는 내 마음을 잃어 가고 있습니까? 이걸 본 사람? 데이터베이스를 지울 필요가 있다면 캐싱을 해제하고 마이그레이션 한 다음 다시 켜야합니까?
레일 3.2 루비 1.9.2, 0.9.2.2 퀴
업데이트 : https://gist.github.com/1705064가
order.rb가 : 179이있다 요청한 같이
여기 스택 트레이스는 내 첫 번째 범위가 정의 된 위치와 위에 나열된 위치에서 폭파합니다.
스택 트레이스는 무엇입니까? – phoet
요점에 대한 추적에 대한 링크를 포함하도록 편집했습니다. –
나는'order_controller.rb'가 스택에있는 것이 이상하다는 것을 알게되었습니다. 실제로 레이크 작업에서 미친 일을하지 않는지, 실제로 범위를 호출합니까? – phoet