В RoR довольно часто случается, что новые люди загружают класс и ассимиляции, такие как # решение для загрузки нагрузки
# The bellow generates an insane amount of queries
# post has many comments
# If you have 10 posts with 5 comments each
# this will run 11 queries
posts = Post.find(:all)
posts.each do |post|
post.comments
end
Решение довольно просто для загрузки нагрузки
# should be 2 queries
# no matter how many posts you have
posts = Post.find(:all, :include => :comments) # runs a query to get all the comments for all the posts
posts.each do |post|
post.comments # runs a query to get the comments for that post
end
Но что, если у вас нет доступа к методам класса и есть доступ к коллекции методов экземпляра.
Затем вы застряли в интенсивной ленивой загрузке запроса.
Есть ли способ минимизировать запросы, чтобы получить все comments
для коллекции posts
, из коллекции экземпляров?
Дополнение для ответа (также добавлено в код выше)
Таким образом, для того, чтобы загружать из того, что я вижу в rdoc для rails, является метод класса для любого расширения ActiveRecord:: Associations, проблема в том, что у вас нет возможности использовать метод класса, поэтому вы нужно использовать какой-то метод экземпляра
пример кода, на который, как я думаю, будет выглядеть, будет что-то вроде
post = Posts.find(:all)
posts.get_all(:comments) # runs the query to build comments into each post without the class method.