Есть ли драгоценный камень для управления настройками на ресурс? - PullRequest
1 голос
/ 01 августа 2011

Мне нужен гем, который может абстрагировать управление настройками ресурса.По сути, я хочу что-то вроде

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

Мне также нужен способ иметь настройки «по умолчанию» для Персона, а также способ переопределить их для конкретного @person.Настройки должны быть сохранены в базе данных SQL.

Ответы [ 2 ]

0 голосов
/ 04 июля 2014

Если у вас есть rails 2 или rails 3, проверьте гем Ledersmann rails-settings, в котором есть синтаксис для получения всех пар ключ-значение, как вы и просили:

    son.settings.all

Легко добавить настройки:

    son.settings.key = value

Вы также получаете области активных записей для поиска на основе настроек. И вы можете установить настройки по умолчанию и глобальные (область применения) настройки.

Для рельсов 2 вам необходимо использовать версию "~> 1.x" и следовать документам: https://github.com/ledermann/rails-settings/blob/c5c34faf1bbe5742b58f6b3acff3874edc6e4bbc/README.md

Если вам нужно: до и: после обработки события, отметьте https://github.com/exceed/preferential/

0 голосов
/ 01 августа 2011

Это старый плагин, но он довольно полнофункциональный, и я использовал его в ряде различных проектов: has_easy

Для 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.

Вы определяете свои настройки или что у вас есть в модели:

class User < ActiveRecord::Base
  has_easy :settings do |p|
    p.define :language
    p.define :theme
  end
  has_easy :flags do |f|
    f.define :is_admin
    f.define :is_spammer
  end
end

, которая динамически создает набор методов для доступа к настройкам и флагам.

u = User.new
u.settings.language = 'en/us'
u.flags.is_admin = true
...