Я работаю над приложением направляющих, которое имеет аутентификацию пользователя, которая предоставляет учетную запись администраторов. В рамках учетной записи администраторов я сделал страницу для по всему сайту настроек.
Я задавался вопросом, что норма для создания этих настроек. Скажите, например, что я хотел бы, чтобы одна из настроек была, чтобы изменить имя имени приложения или изменить цвет заголовка.
То, что я ищу, - чтобы кто-то объяснил базовый процесс / метод - не обязательно определенный код - хотя это было бы большим!
Для общей конфигурации приложения, которую не нужно хранить в таблице базы данных, мне нравится создавать файл config.yml
в config каталог. В вашем примере это может выглядеть так:
defaults: &defaults
app_title: My Awesome App
header_colour: #fff
development:
<<: *defaults
test:
<<: *defaults
app_title: My Awesome App (TEST ENV)
production:
<<: *defaults
Этот файл конфигурации загружается из настраиваемого инициализатора в config / initializers :
Rails 2.x:
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV]
Rails 3.x:
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
Затем вы можете получить значение, используя:
title = APP_CONFIG['app_title']
См. этот Railscast для получения полной информации.
Вот что я сделал, и кажется, что большинство людей тоже следуют этому подходу: http://kpumuk.info/ruby-on-rails/f flexible-application-configuration-in-ruby-on-rails/
Есть неплохой плагин / гем Settingslogic .
# app/config/application.yml
defaults: &defaults
cool:
saweet: nested settings
neat_setting: 24
awesome_setting: <%= "Did you know 5 + 5 = #{5 + 5}?" %>
development:
<<: *defaults
neat_setting: 800
test:
<<: *defaults
production:
<<: *defaults
Вы можете использовать эти настройки где угодно, например в модели:
class Post < ActiveRecord::Base
self.per_page = Settings.pagination.posts_per_page
end