DEV Community

David Paluy
David Paluy

Posted on

Customizable Email sender address with Devise

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!

Discussion (0)