2009-12-13 64 views

回答

0

的最佳途径,你可以把一个before_filter到ApplicationController中。

before_filter :load_business_rules

这将每次调用load_business_rules方法。

+0

谢谢吉姆。想到了,在config.after_initialize中添加以调用方法是否是个好主意? – Sid 2009-12-13 08:14:52

+0

它的工作原理。虽然仍然想知道这是什么“Rails方式”。 – Sid 2009-12-13 09:17:03

0

我想你会想在你的环境文件中做到这一点,而不是作为before_filter。原因是before_filter会创建性能优先,因为该方法在网站上的每个操作之前都会运行。你可以做的,而不是简单地用一个初始化调用它,或者如果你需要存储的业务规则作为一个静态的对象,你可以在你的环境中声明为一个常量:

Rails::Initializer.run do |config| 
    ... 
end 

BUSINESS_RULES = load_business_rules 

这要看是什么方法确实。如果您只是将一堆常量存储在一个静态对象中,您可以创建一个简单的类并将其放入模型目录中。

例如在一个电子商务网站,我最近建我创建了一个Store模式:

class Store 
    # Constants 
    MAX_QUANTITY = 10 
    SALES_TAX_RATE = 0.081 
    SALES_TAX_STATES = ["AZ","Arizona"] 
    SHIPPING_METHODS = {"Standard" => "standard", "2nd Day (add $18)" => "2nd day"} 
    SHIPPING_COSTS = {"standard" => 0, "2nd day" => 18} 
    SHIPPING_MINIMUM = 6 
    SHIPPING_RATES = [[25,6],[50,8],[70,9],[100,11],[150,13],[200,15],[200,18]] 
    ... 
end 

然后在我的控制器,视图,或者模型我可以通过轻松地引用这些常量:

Store::MAX_QUANTITY 

我希望有帮助!

相关问题