2012-12-02 1 views
1

레일 응용 프로그램에서이 이상한 동작이 있습니다. 모든 찾기 쿼리는 두 번 실행됩니다. 나는 이것을 p 측과 DB 측 모두에 로깅함으로써 이것을 확인했다. 난 단지 개발 모드에서 그것을 테스트했습니다.레일 및 몽고 이드 및 중복 찾기 쿼리

메쏘드에 로깅을 추가하여 메쏘드가 여러 번 호출 되었는가를 확인했습니다.

모든 저장은 정확히 한 번 실행되므로 아무런 문제가 없습니다. 페이지가로드되는 문제 만이 모든 데이터를 두 번 쿼리하기 때문에 DB에있는 데이터가 점점 더 느려집니다.

코드의 어느 부분을 붙여야할지 모르겠다. 나는 이것이 어디에서 오는 것인지 전혀 모른다. 내가

mongoid (3.0.13), rails (3.1.3)을 사용하고

여기, 조상의 children 메소드를 호출하면 해당 Shop::Category::all_products 나타납니다 전체 소스 https://github.com/deiga/new-Roydon/tree/develop

답변

9

당신은 아마 지금까지 그것을 풀어봤을 것입니다. 그러나 동일한 문제가 있었고 그 이유는 성능을 측정 할 목적으로 모든 몽고 이드를 찾아내는 bullet 보석이었습니다.

Gemfile에도 포함되어있는 것을 볼 수 있습니다. 아마도 그럴 것입니다.

+0

나는 그것을 실제로 해결하지 않았다. 고마워! :) – deiga

0

에 대한 github에 대한 링크,의 Mongoid 선택 만드는 것입니다. 한편 includes(:products)을 지정하면 ProductsController에서 이미 관련 제품을 가져 왔습니다.

ProductsController의 라인 5에서 includes(:products)을 제거하고 해당 컨트롤러 동작에서 중복을 제거하는지 확인해보십시오.

+0

물론 시도해 보겠습니다. 그것은 왜 다른 모든 발견이 또한 복제되는지를 설명하지 못할 것입니다. 나는''Shop :: ShoppingCart.find''와 그 외 모든 것을 의미합니다. – deiga

+0

비슷한 일이 Shop :: ControllerController의 before_filter에서 발생했다면. – platforms