Rails Включает не возврат всех дочерних записей - PullRequest
1 голос
/ 18 октября 2019

У меня есть следующий запрос, который захватывает Orders с Addresses, где состояние Texas.

orders = Order.includes(:addresses).where(:addresses => {state: "Texas"})

Я могу получить все свои заказы, но заметил, что при доступеадреса, которые не все адреса были сохранены в памяти.

Вот как я нашел проблему:

orders.each do |i|
    puts orders.addresses.length #outputs 1 or 2 randomly
    puts orders.addresses.count #outputs 2 every time
end

У всех моих заказов два адреса;один биллинг и одна доставка. Печать length показала бы только 1 для примерно половины записей и показала бы 2 для другой половины. Печать count всегда показывала 2. Если я изменил запрос с включений на объединения, он работал бы правильно, но не включал бы в запрос адреса.

ОБНОВЛЕНИЕ

Изменение includes на joins в приведенном выше запросе заставляет все работать должным образом. Тем не менее, я теряю предварительную загрузку. Я не понимаю, почему включает в себя не работает здесь. Что-то не так.

1 Ответ

0 голосов
/ 18 октября 2019
orders.each do |i|
  puts i.addresses.length 
  puts i.addresses.count 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...