Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 是否有一个gem来管理每个资源的设置?_Ruby On Rails 3_Settings_Gem - Fatal编程技术网

Ruby on rails 3 是否有一个gem来管理每个资源的设置?

Ruby on rails 3 是否有一个gem来管理每个资源的设置?,ruby-on-rails-3,settings,gem,Ruby On Rails 3,Settings,Gem,我需要一个宝石,可以抽象的资源设置管理。基本上我想要的是 @person = Person.find(1) @person.settings <- this gives a hash of key/value pairs associated with this resource 我还需要一种方法来拥有每个人的默认设置,以及一种方法来覆盖特定@Person的默认设置。这些设置应该保存在SQL db中。这是一个旧插件,但功能非常齐全,我在许多不同的项目中使用过它: 对于Rails3,生成器

我需要一个宝石,可以抽象的资源设置管理。基本上我想要的是

@person = Person.find(1)
@person.settings <- this gives a hash of key/value pairs associated with this resource

我还需要一种方法来拥有每个人的默认设置,以及一种方法来覆盖特定@Person的默认设置。这些设置应该保存在SQL db中。

这是一个旧插件,但功能非常齐全,我在许多不同的项目中使用过它:

对于Rails3,生成器无法工作,但您可以手动创建它所需的迁移

class CreateHasEasyThings < ActiveRecord::Migration
  def self.up
    create_table :has_easy_things do |t|
      t.string  :model_type, :null => false
      t.integer :model_id, :null => false
      t.string  :context
      t.string  :name, :null => false
      t.string  :value
      t.timestamps
    end
  end

  def self.down
    drop_table :has_easy_things
  end
end

如果您有rails 2或rails 3,请查看Ledermann的rails设置gem,它的语法可以获得所有键值对,就像您要求的那样:

    son.settings.all
易于添加设置:

    son.settings.key = value
您还可以根据设置获取要搜索的activerecord范围。您还可以设置默认设置和全局应用程序范围设置

对于rails 2,您需要使用版本~>1.x并遵循以下文档:


如果需要:事件处理之前和:事件处理之后,请选中

这与我需要的非常接近,但似乎不支持Rails3。您是否尝试过Rails3?属性列表不是动态的,即必须根据模型定义。更新了答案,说明如何使其在Rails3中工作。是,特性列表是按模型定义的。您甚至可以在类上定义默认值,然后根据需要在实例中重写它们。这一分支很容易声明,可以在Rails3中开箱即用:
    son.settings.all
    son.settings.key = value