В настоящее время у меня есть потребность в разрешении как глобальных параметров, настраиваемых администратором, так и настраиваемых пользователем параметров в приложении Rails 3.
Есть ли какие-то жемчужины или передовые методы, которые подходят для этой ситуации?
Я нашел несколько драгоценных камней и сообщений в блогах, но все они датируются 2006-08 гг. И больше не поддерживаются. Любые указатели будут оценены, спасибо.
Примечание. Я видел этот вопрос с сериализованным хеш-ответом, но в моем конкретном случае требуется возможность запрашивать базу данных для пользователей на основе их настроек — я не думаю, что сериализованный хеш-код будет хорошо работать в этой ситуации.
В дополнение к этому, если вы просто ищете общесистемную конфигурацию, есть новый вариант, который выглядит хорошо — github .com / paulca / configurable_engine — person Kevin Ansfield schedule 10.02.2011
спасибо за это, выглядит как классная жемчужина. — person Kevin Ansfield schedule 11.10.2011
Возможный дубликат Ruby on Rails — сохранение конфигурации приложения — person Kevin Ansfield schedule 28.10.2016
Как всегда сразу после обращения за помощью, мои поиски приносят плоды. Нашел вилку rails-settings Георга Ледерманна, которая, похоже, сделает именно то, что мне нужно.
И этот является вилкой rails-settings на 110 Гц с кешированием — person Kevin Ansfield; 12.06.2012
Не уверен, что буду искать библиотеку для этой функции.
Для глобальных настроек я бы создал файл config / application.yml, прочитал его в environment.rb и установил для него глобальный APP_CONFIG. Затем я бы переопределил эти настройки для каждого пользователя, добавив текстовый столбец в пользовательскую таблицу с хешем настроек в json-кодировке. Добавьте в модель пользователя метод, который захватывает APP_CONFIG и выполняет глубокое слияние с декодированными пользовательскими настройками.
Другой вариант — создать таблицу настроек со столбцом user_id и столбцами для каждого параметра. Одна строка с нулевым user_id будет представлять глобальные настройки. Если для текущего пользователя существует строка, любые значения, отличные от nil, переопределят строку глобальных настроек.
Спасибо за ответ. Оба вышеперечисленных подходы определенно действительны. В конце концов, я выбрал вилку Rails 3 для гема rails-settings, поскольку он также легко позволял применять настройки к нескольким типам моделей (у меня есть глобальные настройки, а также настройки для администраторов, пользователей и индивидуальных прослушиваний пользователей среди прочего. ). — person Kevin Ansfield; 04.12.2010
У меня было много проблем с драгоценным камнем в принятом ответе в рельсах 3.2. Это решение я реализовал за несколько минут. Я выполнил сериализацию YAML для своего столбца базы данных и установил инициализатор, подобный упомянутому здесь stackoverflow.com/questions/592554/ — person Kevin Ansfield; 21.01.2013
Также можно посмотреть https://github.com/railsjedi/rails_config. Среди множества функций:
Для rails 4, если вы используете postgresql, вы можете использовать HStore, который похож на сериализуемый атрибут, но с ним можно выполнять SQL-запросы.
Для rails 3 вы можете использовать гем activerecord-postgres-hstore.