我正在努力寻找一种模式来存储Rails 3中的单用户设置(增值税百分比,标记行。本质上是1关的东西)。我需要设置具有单个实例的全局站点设置。
理想情况下,我希望答案是设计模式,而不是gem或插件(除非有人知道与Active Admin集成的gem或插件)
答案 0 :(得分:1)
单次使用设置是什么意思?你的意思是API密钥和环境变量吗?
如果是这样,那么一个好的做法是使用ENV哈希,并在环境文件中设置ENV变量(如下所述)。
为需要.rb
目录中的设置的每个gem(或任意实体)创建一个config/initializers/
文件。例如,在使用条带时,我创建了config/initializers/stripe.rb
,如下所示:
Rails.configuration.stripe = {
:publishable_key => ENV['STRIPE_PUBLISHABLE_KEY'],
:secret_key => ENV['STRIPE_SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
这会在我的stripe gem中设置初始设置,并从ENV哈希中提取变量值。
要在ENV哈希中设置变量,您可以在config/environments
目录中执行此操作。在该目录中,您将有三个不同的文件:config/environments/test.rb
,config/environments/development.rb
,config/environments/production.rb
。在ENV哈希中设置变量(如下所示)。
AppName::Application.configure do
# Set Stripe API Key
ENV['STRIPE_SECRET_KEY'] = "sk_test_key"
ENV['STRIPE_PUBLISHABLE_KEY'] = "pk_test_key"
...
end
答案 1 :(得分:0)
用于存储键值对的类怎么样?
class Settings < ActiveRecord::Base
attr_accessible :lookup, :value
def self.VAT
return self.find_by_lookup('VAT')
end
end
然后你可以做@vat = Settings.VAT.value
或类似的事情。查找是您内部定义的键。当然,value列必须是所有相同的数据类型,但您可以在getter方法(或通过子类)中处理任何必要的转换。