У меня есть команда Rails:
Product.includes(:sale, :product_description).select('distinct on (size) *')
Насколько я понимаю, когда я запускаю эту команду, Rails охотно загружает результаты в память, и, поскольку существует только 4 размера, результат должен содержать только 4 записи. Однако, если я сделаю что-то вроде:
result = Product.includes(:sale, :product_description).select('distinct on (size) *')
и затем сделайте: result.size
. Результатом будет подсчет всех записей продукта, который равен 435. Но если я сделаю: result.length
, тогда я получу ожидаемый ответ, равный 4.
Почему я получаю разные результаты с length
и size
? Я думал, что при использовании includes
все загружается с нетерпением, поэтому length
и size
должны возвращать одинаковое количество?
Также обратите внимание, что если я сначала запускаю length
, а затем size
, оба возвращают правильный результат 4. Но если я сначала запускаю size
, то я получаю неправильный ответ 435.