Ответ 1
Как всегда сразу после просьбы о помощи мой поиск приносит плоды. Найдено вилка Georg Ledermann настроек rails, которая выглядит так, как будто она будет делать то, что мне нужно.
У меня есть текущая потребность в разрешении как настраиваемых пользователем глобальных настроек, так и настраиваемых пользователем настройках в приложении Rails 3.
Есть ли какие-либо драгоценные камни или лучшие практики, которые хорошо подходят для этой ситуации?
Я нашел пару камней и сообщений в блогах, но все они относятся к 2006-08 годам и больше не поддерживаются. Любые указатели будут оценены, спасибо.
Примечание. Я видел этот вопрос с сериализованным хеш-ответом, но в моем конкретном случае требуется запросить базу данных для пользователей на основе их настроек - я не думайте, что сериализованный хэш будет хорошо работать в этой ситуации.
Как всегда сразу после просьбы о помощи мой поиск приносит плоды. Найдено вилка Georg Ledermann настроек rails, которая выглядит так, как будто она будет делать то, что мне нужно.
Не уверен, что я буду искать библиотеку для этой функции.
Для глобальных настроек я бы создал файл config/application.yml и прочитал его в файле environment.rb и установил его в глобальный APP_CONFIG. Затем я бы переопределил эти настройки для каждого пользователя, добавив текстовый столбец в пользовательскую таблицу с хэш-настройкой json-encoded. Добавьте метод в модель пользователя, который захватывает APP_CONFIG и выполняет глубокое слияние с декодированными пользовательскими настройками.
Другой вариант - создать таблицу настроек с столбцом user_id и столбцами для каждого параметра. Одна строка с нулевым user_id будет представлять глобальные настройки. Если для текущего пользователя существует строка, любые значения, отличные от nil, будут переопределять строку глобальных настроек.
Может также хотеть посмотреть https://github.com/railsjedi/rails_config. Среди множества функций:
Для рельсов 4, если вы используете postgresql, вы можете использовать HStore, что похоже на сериализуемый атрибут, но вы делаете SQL-запросы с ним.
Для рельсов 3 вы можете использовать activerecord-postgres-hstore gem.