2013-09-29 122 views
2

我有一个关系数据库表,其中包含产品查找。此表支持多个系统,其中只有一个是Rails应用程序。在Rails应用程序中,我想使用产品查找作为具有产品代码的实例成员的ActiveRecord类 - 例如,关键代码字段是4位字母数字。能够通过如下代码引用实例会很好:ProductCode.01A3。当然,我不想简单地在Rails代码中声明它们,因为DB是多个系统的记录系统。另外,Ruby如何应对不存在的产品代码?如果ProductCode.ABCD不存在,它是否只是默默地返回一个零,我需要零遍的检查吗?然后是将新的ProductCode发布到生产中的问题。更新表格需要重新加载类实例变量。ActiveRecord将关系表作为枚举实例加载类加载

想法?这可以做到吗?应该这样做吗?我搜索了一个图书馆,但也许我的Google-fu并不好。

回答

0

查找表是减少数据库查询次数的好工具,我经常在长工作进程中使用它们。我不会推荐在webapp中使用它们,除非数据经常被访问,很少发生变化,而且价格昂贵。

我对你的实现问题是这样的:

class ProductCode 
    @product_codes = {} 
    class << self 
    attr_accessor :product_codes 
    end 

    def self.get(code) 
    @product_codes[code.to_s] 
    end 

    def self.cache_all 
    # whatever you do here 
    @product_codes = {'01A3' => 42} 
    end 
end 

ProductCodes.cache_all 

ProductCodes.get('01A3')