Почему в этом коде выполняется только 1 запрос с использованием областей из плагина rails-jquery-autocomplete? - PullRequest
0 голосов
/ 16 октября 2011

Я смотрю на этот код из плагина raqu jquery autocomplete .. в строке 12 «items» задан как объект с областью видимости. Затем в следующие несколько строк кажется, что объект с областью видимости переназначается несколько раз.

Когда я запускаю код, кажется, что выполняется только 1 запрос, который является общей суммой всех областей действия ... (что здорово, просто не знаю почему). Означает ли это, что объект с областью действия накапливает области до конца метода, когда он выполняется? Или Active Record просто оптимизирует производительность, сводя к минимуму количество запросов, ожидая сбора всех запросов ... помогите мне понять :):

def get_autocomplete_items(parameters)
    model   = parameters[:model]
    term    = parameters[:term]
    method  = parameters[:method]
    options = parameters[:options]
    scopes  = Array(options[:scopes])
    limit   = get_autocomplete_limit(options)
    order   = get_autocomplete_order(method, options, model)


    items = model.scoped

    scopes.each { |scope| items = items.send(scope) } unless scopes.empty?

    items = items.select(get_autocomplete_select_clause(model, method, options)) unless options[:full_model]
    items = items.where(get_autocomplete_where_clause(model, term, method, options)).
        limit(limit).order(order)
  end

1 Ответ

1 голос
/ 16 октября 2011

Это часть того, что Rails выясняет для вас, что когда вы делаете объемы областей действия (до бесконечности), Rails выясняет, как эффективно выполнить запрос. Приличное объяснение в этом подкасте ближе к концу, где Райан показывает результаты запросов области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...