Перегрузка рельсов - PullRequest
0 голосов
/ 07 мая 2011

Допустим, у меня есть следующие модели:

Class Wishlist
    belongs_to :user # User class is irrelevant here
    has_many :inclusions
    has_many :products, :through => :inclusions
  end

  Class Product
    has_many :inclusions
    has_many :wishlists, :through => :inclusions
  end

  Class Inclusion
    belongs_to :product
    belongs_to :wishlist
  end

включения / index.html.erb

  <%= render @inclusions %>

включения / _inclusion.html.erb

  <%= "#{ inclusion.quantity } #{ inclusion.product.name } #{ inclusion.wishlist.user.name }"%>

Этот пример тривиален, но суть в том, что количество запросов к базе данных огромно. Для каждого экземпляра _inclusion.html.erb создается по крайней мере три новых запроса. Есть ли способ предварительно получить эту информацию заранее, возможно, с помощью команды JOIN?

Ответы [ 2 ]

1 голос
/ 07 мая 2011

Может быть, это может помочь:

 @inclusions = Inclusions.includes(:product, { :wishlist => :user })

Читайте о нетерпеливой загрузке.

0 голосов
/ 07 мая 2011

задумывались ли вы о создании представления sql, которое называется, например, ProductsWishlist и (если производительность будет плохая) его материализации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...