Кэширование свойства level в awesome_nested_set
Плагин 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
acts_as_nested_set
after_move :caching_level
private
def caching_level
self.cached_level = level
save!
end
end
Это добавит один запрос при перемещении узла, но удалит кучу запросов при формировании дерева.

(1 голосов, средний: 4.00 из 5)