Несколько запросов к БД с RABL и Mongoid/Moped

У меня есть простое приложение, использующее rabl и mongoid 3.1.0, с этим действием:

# index
@products = current_shop.products

Код рабла выглядит так:

# index.json.rabl
collection @products
extends 'api/products/show'

# show.json.rabl
object @product
attributes :id

Когда я нажимаю его, в журналах отображаются 4 запроса, связанных с @products:

MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (0.5682ms)
MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (1.1139ms)
MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.4492ms)
MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"$query"=>{"shop_id"=>"511c7866fd896b1908000002"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.4332ms)

Когда я делаю это:

@products = current_shop.products.search(params[:query])
render text: @products.map(&:name).join(",")

Я получаю только один запрос, связанный с @products:

MOPED: 127.0.0.1:27017 QUERY        database=bamboo_development collection=products selector={"shop_id"=>"511c7866fd896b1908000002"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.4611ms)

Дублированные запросы выглядят странно, кто-нибудь знает, почему это происходит? Он не вызывает дочерние объекты, а просто несколько отличается от того, что я вижу, запросы к коллекции.


person Greg Funtusov    schedule 15.02.2013    source источник
comment
Попробуйте @products = current_shop.products.to_a   -  person Aymeric    schedule 23.02.2013


Ответы (1)


У многих людей такая же проблема. Скорее всего из-за проблемы с конфигурацией рабла. Как рекомендовал Aymeric выше, просто выполните: @products = current_shop.products.to_a

person daniel    schedule 04.03.2013