У меня есть следующее:
@rooms = current_user.rooms
Затем мне нужно построить объект JSON, поэтому я делаю:
render :json => room_json_index(@rooms)
Затем, чтобы построить объект JSON:
def room_json_index(rooms)
@roomList = Array.new
rooms.each do |room|
@roomList << {
:id => room.id,
:user_id => room.user_id,
:user_count => room_members.length,
:user_photos => room_members.collect { |room_member|
{
:id => room_member.user.id,
:photo => room_member.user.photo(:thumb),
:name => room_member.user.full_name
}
}
}
end
@roomList.to_json
end
Проблема здесь в том, что в каждом цикле rooms.each рельсы продолжают получать данные для одних и тех же пользовательских объектов. Это необходимо? Я вижу в журналах, что это кеширование, но я бы предпочел, чтобы рельсы даже не думали об этом.
roomMember Load (1.1ms) SELECT "room_members".* FROM "room_members" INNER JOIN "users" ON "users"."id" = "room_members"."user_id" WHERE ("room_members".room_id = 143) AND (users.guest = false OR users.guest = true AND users.fname IS NOT NULL OR users.id = 3)
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 69 LIMIT 1
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 70 LIMIT 1
Room
Rails в журналах повторяет запрос выше и снова, просматривая одни и те же записи снова и снова. Любые идеи о том, как это можно оптимизировать?
Спасибо