Скажем, у меня есть системные таблицы категории с 2 фиксированными записями. Пользователь не сможет удалить эти 2, но может пожелать добавить свои собственные, чтобы расширить свой список. Мне нужно в любой момент вытащить категорию «сад», например, при создании садового проекта.Rails: как я могу кэшировать данные системной таблицы
Читатель атрибутов класса, который возвращает экземпляр сада, выполнит эту работу, но я хотел бы знать, как это можно улучшить с помощью кеширования?
Я считаю, что memoization будет работать только в процессе, который здесь почти бессмыслен. Я бы хотел, чтобы он был установлен один раз (возможно, в первый раз, когда он был доступен или при запуске приложения), и просто останется в кеше для будущего использования.
Пример установки:
class Project < ActiveRecord::Base
belongs_to :category
end
class Category < SystemTable
cattr_reader :garden
def self.garden
@@garden ||= self.find_by_name('garden')
end
end
Должен сказать, что мне не особенно нравится этот подход. Мне нужны категории в БД, и я не хочу полагаться на идентификацию записей. Есть ли у вас идея улучшить подход? Я посмотрю на Interlock/memcached. Спасибо за ваш ответ. – tsdbrown
Я только что посмотрел ваше сообщение: http://webcrisps.wordpress.com/2010/01/07/dynamically-add-class-methods-in-rails/ С тех пор, как вы пишете, вы бы порекомендовали его, как кажется отлично справляйтесь с этой ситуацией !? Мне просто нужно добавить условие, чтобы вытаскивать только записи, не связанные с клиентом. – tsdbrown
Не совсем - мой подход создает метод удобства, но он не кэширует результат и поэтому не добавляет никакой производительности. Это просто для удобства, т. Е. Чтобы сохранить немного ввода кода. –