Моя идея для метода #index контроллера состоит в том, чтобы установить things = Thing.all
, а затем, если есть параметры фильтра, проверить их один за другим и включить их в цепочку, чтобы в конце вы остались с однимзапрос для выполнения.Но следующие запросы выполняются так, как они называются:
def things_controller
def index
things = Thing.all #<-- db call #1
if params[:color]
things = things.where(color: params[:color]) #<-- db call #2
end
render json: things #<-- I would like to make a single db call here instead
end
end
Как я могу предотвратить несколько ненужных вызовов БД?Есть ли какое-то соглашение для параметров фильтра, которые я должен использовать?