假设我有一个系统表'categories'和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
我必须说,我不觉得这种方法特别舒服。我需要数据库中的类别,我不想依赖知道记录的ID。你有改进方法的想法吗?我会看看Interlock/memcached。感谢您的答复。 – tsdbrown 2010-09-22 10:19:07
我刚刚看了你的帖子:http://webcrisps.wordpress.com/2010/01/07/dynamically-add-class-methods-in-rails/自写之后,你仍然会推荐它,因为这似乎完全适应这种情况!?我只需要添加一个条件来只取出非基于客户的记录。 – tsdbrown 2010-09-22 10:34:29
不是真的 - 我的方法创建了一个方便的方法,但它不会缓存结果,因此不会添加任何性能。这只是为了方便,也就是为了节省我在我的代码中输入一些内容。 – 2010-09-23 10:27:48