缓存表值(避免不必要的查找查询) - 这是一个好方法吗?

时间:2013-12-13 22:36:43

标签: ruby-on-rails

在我的应用程序中,我经常需要在许多地方按品牌名称找到品牌ID,所以如果......

class Brand < ActiveRecord::Base

...

  after_save :refresh_names_hash

  #this is a rare action because brands list is static enough
  def refresh_names_hash
    Brand.names_hash(true)
  end

  def self.names_hash(refresh=false)
    @names_hash = nil if refresh
    @names_hash ||= Hash[all.map{|b| [b.name, b.id]}]
  end

...

end

希望一切都清楚这段代码

这是一个问题:这是一个很好的方法,每次我需要时使用Brand.names_hash[params[:name]]来实现品牌ID,而不是在生产环境中从db中查询它(启用类缓存)?

0 个答案:

没有答案