When installing the devise gem in your Rails application, you will find the following:
Devise.setup do |config|
# ...
config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
# ...
end
You can set static email, for example:
Devise.setup do |config|
# ...
config.mailer_sender = 'Acme Team <team@acme.com>'
# ...
end
But if you need to allow your back-office team member periodically to customize this parameter, how would you do this?
I recommend using rails-settings gem.
class Setting < RailsSettings::Base
field :email_from, type: :string, default: 'Acme Team <team@acme.com>'
end
Now, if you try adding this Setting.email_from
to devise.rb
initializer, you will get an error: You cannot use settings before Rails initialize. (RuntimeError)
.
To solve this problem, do the following:
Devise.setup do |config|
# ...
config.mailer_sender = ->(_devise_mapping) { SiteConfig.email_from }
# ...
end
Happy Hacking!