Как хранить различные параметры сайта в базе данных с помощью Rails? - PullRequest
0 голосов
/ 29 января 2010

Существует множество способов сохранить настройки сайта в базе данных.Но что, если мне нужно управлять типами данных.Таким образом, некоторые предпочтения будут булевыми, другие строки, другие целые числа.

Как я могу организовать такой магазин?

Ответы [ 4 ]

1 голос
/ 15 января 2011

Я написал гем, который делает именно это, и недавно обновил его для Rails 3:

Для рельсов 3:

http://github.com/paulca/configurable_engine

для рельсов 2.3.x

http://github.com/paulca/behavior

Наслаждайтесь!

0 голосов
/ 29 января 2010

Я довольно ленив в настройках и храню данные в виде сериализованных хэшей JSON или YAML. Работает очень хорошо и в целом сохраняет типы данных.

0 голосов
/ 29 января 2010

Я использовал одну таблицу с одной строкой, и каждый столбец представлял одно предпочтение. Это позволяет иметь разные типы данных.

Чтобы иметь возможность получить предпочтение, я переопределил 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
0 голосов
/ 29 января 2010

Rails Migrations используются для создания и обновления базы данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...