У меня есть следующие шаблонного в контроллере АвтомобилиRails/ActiveRecord контроллер шаблонный (вызов .all)
class CarsController < ApplicationController
# GET /cars
# GET /cars.json
def index
@cars = Car.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @cars }
end
end
Допустим, у меня есть 50000 автомобилей в моей базе данных.
Я понимаю, что каждый звонок /cars/index
будет запрашивать db (select * from cars
) и строить объект для хранения всей этой информации. Тогда у Просмотра автомобилей будет доступ к @cars
, и запрос json просто получит гигантский ответ json, включая все 50 тыс. Автомобилей.
- Это поведение по умолчанию звучит как ужасная идея в моей ситуации. Что, если
/cars
очень популярная страница? Что, если бы у меня было 10 миллионов автомобилей? - Я не использую
@cars
на вид (index.html.erb
), так как я могу проверить, что мне не нужны любые звонки json? (НОО Rails это нужно по какой-то причине я нахожусь не знают из?)
Кажется, что @cars = Car.all
очень клево строка кода используется только для проверки того, что ваш новый контроллер работает, и, вероятно, следует удалить право в начале. Правильно?
/cars/index не показывает никаких автомобилей вообще. Это означает, что я могу удалить строку '@cars = Car.all' и сэкономить много ресурсов, не так ли? – Patrick
Да. Если вы ничего не сделаете с ними, вы просто удалите их. Имейте в виду, что Rails scaffolding показывает вам, как делаются вещи, но действия контроллера, такие как «index», должны/не могут использоваться в производственных системах (больших db). – Max
Спасибо Макс. Как узнать, используется ли json-аспект? Если бы мне понадобилось '@ cars' для json, могу ли я поместить линию Car.all внутри фигурных скобок format.json? – Patrick