Сделайте настройки всего приложения доступными для пользователя через веб-формы - PullRequest
4 голосов
/ 17 ноября 2011

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

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

Каков наилучший способ создания таких настроек для всего приложения в Rails 3.1и сделать их легко доступными для конечного пользователя?Бонусные баллы за любые примеры приложений, на которые вы можете ссылаться.

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Доминирующим соглашением для хранения редактируемых настроек всего приложения является концепция хранилища значений ключей, поддерживаемая либо ActiveRecord, либо другими механизмами. И, насколько я знаю, есть по крайней мере две хороших стратегии для хранения настроек всего приложения в зависимости от ваших реквизитов.

Если вам нужен универсальный подход, но чрезвычайно гибкий для определения пары (не) настроек области действия, которые могут быть связаны с AR-моделями, у вас есть Rails-Settings (или его кэшированная версия * 1005). * Рельсы-Настройка-Cached ). Я не пробовал использовать плагин в Rails 3.1, но он хорошо работает на 3.0. Это позволяет вам иметь такие вещи, как:

Settings.main_color = '#3333CC'
Settings.logo_file_name = 'images/logo.png'
Setting['preferences.color'] = :blue

Если вам нужен надежный подход, с наследованием одной таблицы и позволяющий вам выполнять проверки в определенных настройках, как это было бы с реальными записями AR, у вас есть хорошая статья , написанная Джеффом Дином , который шаг за шагом через весь процесс. Таким образом вы ограничиваете настройки, группируя их в подклассы, и у вас могут быть такие вещи:

class ApplicationSettings::PageLayout < ApplicationSetting
  validates :title, :presence => true
  ...
  def title
    value
  end

  def title=(value)
    self.value = value
  end

И я полагаю, что при некоторой простой настройке вы даже можете иметь ассоциации has_many и belongs_to в некоторых ваших настройках (например, список телефонных номеров или сообщений электронной почты переменного размера).

Лично я предпочитаю последний подход (когда настройки имеют большое значение), потому что он дает вам больший контроль над настройками, которые вы сохраняете, и сохраняет ваш код чистым и СУХИМЫМ, позволяя вам следовать шаблону MVC.

0 голосов
/ 17 ноября 2011

Я обычно настраиваю модель Properties с некоторыми базовыми лесами в разделе администратора - затем вызываю соответствующее свойство 'field', где это необходимо, скажем Property.find (: field => "EARLIEST_DATE: YEAR"), в котором должен быть пользователь устанавливаемое значение.

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

enter image description here

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