Rails 3 Приложения / Пользовательские настройки лучшие практики? - PullRequest
19 голосов
/ 29 ноября 2010

У меня есть текущая потребность в настройке как глобальных параметров, настраиваемых администратором, так и пользовательских параметров в приложении Rails 3.

Существуют ли какие-либо драгоценные камни или лучшие практики, которые хорошо подходят для этой ситуации?

Я нашел пару драгоценных камней и постов в блогах, но все они датируются 2006-08 годами и больше не поддерживаются. Любые указатели будут оценены, спасибо.

Примечание: я видел этот вопрос с ответом о сериализованном хеше, но в моем конкретном случае требуется возможность запроса базы данных для пользователей на основе их настроек - я не думаю, что сериализованный хэш хорошо работать в этой ситуации.

Ответы [ 4 ]

19 голосов
/ 29 ноября 2010

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

4 голосов
/ 29 ноября 2010

Не уверен, что я бы искал библиотеку для этой функции.

Для глобальных настроек я бы создал файл config / application.yml, прочитал его в environment.rb и установил глобальный APP_CONFIG. Затем я бы переопределил эти настройки для каждого пользователя, добавив в пользовательскую таблицу текстовый столбец с хэш-кодом настроек в формате json. Добавьте метод к пользовательской модели, который захватывает APP_CONFIG и выполняет глубокое слияние с декодированными пользовательскими настройками.

Другой вариант - создать таблицу настроек со столбцом user_id и столбцами для каждого параметра. Одна строка с нулевым user_id будет представлять глобальные настройки. Если для текущего пользователя существует строка, любые значения, отличные от nil, будут переопределять строку глобальных настроек.

2 голосов
/ 25 ноября 2011

Может также захотеть взглянуть на https://github.com/railsjedi/rails_config. Среди множества функций:

  • Global settings.yml
  • Файлы настроек для каждой среды (settings / development.yml, settings / production.yml и т. Д.)
  • Локальные файлы настроек (settings.local.yml, settings / development.local.yml и т. Д.)
  • Встроенная поддержка ERB
  • Rails 3 / Padrino / Sinatra support
0 голосов
/ 04 мая 2014

Для rails 4, если вы используете postgresql, вы можете использовать HStore , который похож на сериализуемый атрибут, но вы делаете с ним запросы SQL.

Для рельсов 3 вы можете использовать activerecord-postgres-hstore gem.

...