Просто установите его на основе значения базы данных, например:
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
например.