У меня есть следующий запрос, который захватывает 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
в приведенном выше запросе заставляет все работать должным образом. Тем не менее, я теряю предварительную загрузку. Я не понимаю, почему включает в себя не работает здесь. Что-то не так.