在我的应用程序中,我经常需要在许多地方按品牌名称找到品牌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中查询它(启用类缓存)?