Я упростил свой проект, чтобы я мог лучше понять, насколько интересна загрузочная часть RoR 3.2.13. Это мои классы:Rails Eager loading объяснение
class Person < ActiveRecord::Base
attr_accessible :name
has_many :posts
end
И
class Post < ActiveRecord::Base
attr_accessible :name, :person_id
belongs_to :person
end
Когда я сделать что-то вроде
people_data = Person.includes(:posts)
IRB показывает следующий SQL:
Person Load (1.3ms) SELECT `people`.* FROM `people`
Post Load (0.7ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`person_id` IN (1, 2)
И получившийся объект его например:
=> [#<Person id: 1, name: "Ernie">, #<Person id: 2, name: "Bert">]
Обратите внимание, что объектов всего 2 человека, нет сообщений. Как я могу получить простую структуру данных с человеком и его сообщениями. Я хочу сделать это в одной инструкции, я не хочу делать foreach в массиве people.
Im ожидая что-то вроде этого:
[#<Person id: 1, name: "Ernie">, [#<Array 0 => #<Post id:1, name: "Hi">, 1 => #<Post id:2, name: "Hello"> > ....
что он дал 'Person.first.posts' с' include' в вашей модели? –
@ Rajarshi Das. Конечно, но мне нужен весь массив с сообщениями в каждой позиции массива, включенного в объект person. Мне нужен весь список, а не только один элемент списка. :( –
Яркая загрузка работает. Он получает все сообщения с нетерпением (в одном запросе), не так ли? – Mischa