Rails и Mongoid и повторяющиеся поисковые запросы

У меня действительно странное поведение в моем приложении rails. Все поисковые запросы выполняются дважды. Я проверил это, регистрируя запросы как на стороне AP, так и на стороне БД. Однако я тестировал его только в режиме разработки.

Я добавил ведение журнала к методам, чтобы увидеть, вызываются ли методы несколько раз, но это не так.

Все сохранения запускаются ровно один раз, так что тут проблем нет. Только проблема в том, что загрузка страницы будет происходить все медленнее, чем больше данных в БД, поскольку она дважды запрашивает все данные.

Я даже не знаю, какие части кода я должен вставить, так как я понятия не имею, откуда это могло взяться.

Я использую mongoid (3.0.13), rails (3.1.3)

Вот ссылка на github для всего исходного кода https://github.com/deiga/new-Roydon/tree/develop


person deiga    schedule 02.12.2012    source источник


Ответы (2)


Вы, вероятно, уже решили эту проблему, но у меня была та же проблема, и причина была в драгоценном камне bullet, который повторно запускает каждую находку монгоидов с целью измерения производительности.

Я вижу, что вы также включили его в свой Gemfile, так что, вероятно, это так.

person M. Cypher    schedule 25.01.2013

Похоже, что Shop::Category::all_products, который вызывает метод Ancestry children, создает монгоидный выбор. Между тем, вы уже получили соответствующие продукты в своем ProductsController, когда указали includes(:products).

Попробуйте удалить includes(:products) из строки 5 из ProductsController и посмотрите, удаляет ли это дублирование из этого действия контроллера.

person platforms    schedule 02.12.2012
comment
Конечно, я попробую. Это не объясняет, почему все остальные находки также дублируются. Я имею в виду Shop::ShoppingCart.findи все остальное тоже. - person deiga; 03.12.2012
comment
Возможно, если бы подобное происходило в before_filters в Shop::ControllerController. - person platforms; 03.12.2012