如何查询Ruby on Rails缓存表中所有模型的记录?

更新于
2026-10-10 00:11:14
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计376个文字,预计阅读时间需要2分钟。

如何查询Ruby on Rails缓存表中所有模型的记录?

我需要缓存(并过期)表中所有模型的实例。例如,若我有一个名为`Currency`的模型,且我只拥有少于10种可能的货币。因此,最好有:

rubyclass Currency 10.minutes)end

我需要缓存(并过期)表中的所有模型.

例如,如果我有一个名为Currency的模型,我只有少于10种可能的货币.因此,最好有:

class Currency < ActiveRecord::Base cache_all(:expire_in => 10.minutes) end

以便

Currency.all Currency.find_by_name("USD")

不应该打DB.

您认为这可能是一个好方法?

此外,如果您认为使用未由数据库备份的模型会更好,请对此进行评论.请注意,我希望有一个AR风格的协会.

由于数据集非常小,最好的办法是将其缓存在本地内存中.有几种方法可以做到这一点,一种方法是使用 Memoization like I show here.但这并不是最有效的,因为它会将all方法和find_by_name方法存储在不同的缓存中,即使它们是同一个对象.

另一种方法是重新定义手动缓存对象的方法.像这样的东西.

如何查询Ruby on Rails缓存表中所有模型的记录?

class Currency < ActiveRecord::Base def self.all @all_cache ||= super.map(&:freeze) # freeze so you don't modify the cached objects end def self.find_by_name(name) all.detect { |c| c.name.to_s.downcase == name.to_s.downcase } end def self.flush_all_cache @all_cache = nil end end

可能有一个插件可以为你处理这个问题,但我根本没有考虑过这个问题.

标签:所有模型

本文共计376个文字,预计阅读时间需要2分钟。

如何查询Ruby on Rails缓存表中所有模型的记录?

我需要缓存(并过期)表中所有模型的实例。例如,若我有一个名为`Currency`的模型,且我只拥有少于10种可能的货币。因此,最好有:

rubyclass Currency 10.minutes)end

我需要缓存(并过期)表中的所有模型.

例如,如果我有一个名为Currency的模型,我只有少于10种可能的货币.因此,最好有:

class Currency < ActiveRecord::Base cache_all(:expire_in => 10.minutes) end

以便

Currency.all Currency.find_by_name("USD")

不应该打DB.

您认为这可能是一个好方法?

此外,如果您认为使用未由数据库备份的模型会更好,请对此进行评论.请注意,我希望有一个AR风格的协会.

由于数据集非常小,最好的办法是将其缓存在本地内存中.有几种方法可以做到这一点,一种方法是使用 Memoization like I show here.但这并不是最有效的,因为它会将all方法和find_by_name方法存储在不同的缓存中,即使它们是同一个对象.

另一种方法是重新定义手动缓存对象的方法.像这样的东西.

如何查询Ruby on Rails缓存表中所有模型的记录?

class Currency < ActiveRecord::Base def self.all @all_cache ||= super.map(&:freeze) # freeze so you don't modify the cached objects end def self.find_by_name(name) all.detect { |c| c.name.to_s.downcase == name.to_s.downcase } end def self.flush_all_cache @all_cache = nil end end

可能有一个插件可以为你处理这个问题,但我根本没有考虑过这个问题.

标签:所有模型