Undr

На память

Кэширование свойства level в awesome_nested_set

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 4.00 из 5)
Loading ... Loading ...

without comments

Плагин awesome_nested_set в целом достаточно удобный для работы с деревьями, но раздражает отсутствие поля level. Для вычисления level приходится каждый раз обращаться к базе.

Это бывает не удобно, когда нужно вытащить дерево целиком и построить его иерархию. Чтобы кэшировать level в базе данных можно в модель добавить такой код:

class Category < ActiveRecord::Base
  acts_as_nested_set
  after_move :caching_level

  private
  def caching_level
    self.cached_level = level
    save!
  end
end

Это добавит один запрос при перемещении узла, но удалит кучу запросов при формировании дерева.

Написал undr ()

6 сентября 2009 в 19:43

Размещено в Примеры, Программирование

Метки: ,

Оставьте комментарий