Подтвердить что ты не робот

Лучшая практика использования Rails 3 приложений/пользователей?

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

  • Глобальные настройки .yml
  • Файлы настроек для среды (настройки/development.yml, settings/production.yml и т.д.)
  • Файлы локальных настроек (settings.local.yml, settings/development.local.yml и т.д.)
  • Поддержка встроенного ERB
  • Rails 3/Поддержка Padrino/Sinatra

Ответ 4

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

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