Пользовательские настройки SMTP из базы данных в ruby ​​на рельсах? - PullRequest
0 голосов
/ 25 октября 2018

Обычно в rails мы можем настроить параметры smtp следующим образом:

ActionMailer::Base.smtp_settings = {
:address              => "smtp.gmail.com",
:port                 => 587,
:domain               => "anythingworks",
:user_name            => "mygmailaddress@gmail.com",
:password             => "somePW",
:authentication       => "plain",
:enable_starttls_auto => true
}

Но мне нужно, чтобы несколько соединений из базы данных были установлены как smtp, а также, если в базе данных нет значений, следует использовать настройки smtp по умолчанию..

Как мне этого добиться?

1 Ответ

0 голосов
/ 25 октября 2018

Просто установите его на основе значения базы данных, например:

ActionMailer::Base.smtp_settings = {
:address              => Setting.find_by(key: :smtp_address)&.value || 'smtp.gmail.com',
:port                 => 587,
:domain               => "anythingworks",
:user_name            => "mygmailaddress@gmail.com",
:password             => "somePW",
:authentication       => "plain",
:enable_starttls_auto => true
}

Предполагается, что у вас есть таблица базы данных с именем "settings" с столбцами key и value, поэтому вы можете установить любую общую конфигурациюв нем один элемент конфигурации на запись.И параметр класса ActiveRecord для доступа к нему.

Он вернется к жестко закодированному значению, если параметр отсутствует или значение равно нулю.

Другое дело сделатьубедитесь, что этот конфигурационный код установлен в точке цикла загрузки, когда ActiveRecord уже присутствует.Вы можете поместить это в config/initializers/mail.rb например.

...