В настоящее время я пытаюсь понять, как ActiveRecord работает, чтобы связать методы условий, а затем выполнить запрос sql.
Понять цепочку методов довольно легко, и все, что я думал, хорошо объяснено и возобновлено здесь здесь.
Однако есть кое-что, чего я до сих пор не могу понять и что вышеприведенная статья не объясняет: как ActiveRecord узнает, когда выполнять SQL-запрос.
Например, если я закодирую User.where(some_column: "hello").limit(5)
, ActiveRecord создаст экземпляр построителя запросов, установит условия для значения some_column
и ограниченного количества результатов.
Но после выполнения .limit(5)
он также выполняет запрос и возвращает результат: откуда ActiveRecord может знать? Как он может знать, что это метод конечного условия и что он должен возвращать результат? Выполняет ли он SQL-запрос при каждом связанном условии?
В статье, которую я разместил выше, автор обманул, вызвав окончательный метод, each
, который выполнял запрос и возвращал результат.
to_a
не вызывается неявно: он вызывается из переопределения метода проверки. Теперь это имеет смысл! - person Simon Ninon   schedule 06.10.2015