在rails 3中存储单次使用用户设置的最佳做法是什么?

时间:2012-11-23 11:24:48

标签: ruby-on-rails-3 design-patterns

我正在努力寻找一种模式来存储Rails 3中的单用户设置(增值税百分比,标记行。本质上是1关的东西)。我需要设置具有单个实例的全局站点设置。

理想情况下,我希望答案是设计模式,而不是gem或插件(除非有人知道与Active Admin集成的gem或插件)

2 个答案:

答案 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.rbconfig/environments/development.rbconfig/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方法(或通过子类)中处理任何必要的转换。

相关问题