如何使用Rails在数据库中存储不同的站点参数?

时间:2010-01-29 05:32:10

标签: ruby-on-rails activerecord

有很多方法可以在网络数据库中存储网站首选项。但是如果我需要管理数据类型呢?因此,一些首选项将是布尔值,其他字符串则是其他整数。

我如何组织这样的商店?

4 个答案:

答案 0 :(得分:1)

我写了一个确实如此的gem,并且最近为Rails 3更新了它:

对于Rails 3:

http://github.com/paulca/configurable_engine

对于Rails 2.3.x

http://github.com/paulca/behavior

享受!

答案 1 :(得分:0)

我对首选项很懒惰,并将数据存储为序列化的JSON或YAML哈希。工作得很好,通常也会保留数据类型。

答案 2 :(得分:0)

我使用了一个包含单行的表,每列代表一个首选项。这使得可以使用不同的数据类型。

为了能够检索首选项,我重写method_missing以便能够直接从类名检索首选项值而无需实例,如下所示:

class Setting < ActiveRecord::Base
  @@instance = self.first

  def self.instance
    @@instance
  end

  def self.method_missing(method, *args)
    option = method.to_s
    if option.include? '='
        var_name = option.gsub('=', '')
        value = args.first
        @@instance[var_name] = value
      else
        @@instance[option]
    end
  end
end

因此,要检索设置,您可以使用:

a_setting = Setting.column_name

答案 3 :(得分:-2)

Rails迁移用于创建和更新数据库。

http://guides.rubyonrails.org/migrations.html