2015-05-21 4 views
0

Для клиента, который хочет получить контактную форму в своем Rails 4, мне нужно настроить конфигурацию ActionMailer, но разрешить ему изменять конфигурацию (адрес, пароль, smtp ...) из backoffice, например activeadmin или простой интерфейс администратора.Rails 4, ActionMailer: dynamic config

Я не знаю, с чего начать с доступа к файлу environment.rb или production.rb, чтобы изменить эти параметры.

Или если возможно создать ActionMailer в другом файле, который будет доступен и с возможностью настройки динамических переменных?

ответ

0

Вы можете использовать рельсы-настройки кэширования жемчужину

https://github.com/huacnlee/rails-settings-cached

Или

Вы можете создать таблицу конфигурации и позволяют администратору, чтобы сохранить свои параметры конфигурации, как

рельсы г модель Config field_one: string field_two: string field_three: строка

после этого в вас разработка/производство ction.rb

вы можете использовать в качестве Config.first.first_field, Config.first.last_field

и убедитесь, что при обновлении значения столбца, не сделать новую запись, просто обновить последнюю ,

Thanks

+0

Спасибо за ваш ответ, мне нравится ваш второй подход. Но, например, для замены: config.action_mailer.smtp_settings = {адрес: smtp.address, имя_пользователя: 'myusername', пароль: 'mypassword'}. Разве это не слишком глубоко? Или я могу сделать что-то вроде rails g model Config address: string и вызвать его внутри config.action_mailer.smtp_setting = {адрес: Config.address ...} и так далее? – Dl33ter

+1

вы не можете напрямую называть Config.address, либо вы должны сделать методы класса, такие как def self.address last.address end Теперь вы можете напрямую вызвать Config.address. Спасибо, если вы найдете мой ответ полезным для вас, просто дайте upvote –

+0

Он работает и не работает в одно и то же время. Мне пришлось установить параметр actionmailer в инициализаторы, и каждый раз, когда я меняю настройки, которые находятся в БД, мне нужно перезапустить сервер (из-за инициализатора). Я также попытался развернуть герою, но по многим ошибкам. Я ищу другие варианты. Если у вас есть какие-либо предложения? благодаря – Dl33ter