Automatically unsubscribe from emails in Rails.
Add this line to your application's Gemfile:
gem 'unsubscribe'
And then execute:
$ bundle
Or install it yourself as:
$ gem install unsubscribe
Then run the installation commands:
rails g unsubscribe:install
rails unsubscribe:install:migrations
rails db:migrate
- Add
include Unsubscribe::Owner
to aModel
. TheModel
must have anemail
column.
class User < ApplicationRecord
include Unsubscribe::Owner
end
User.first.mailer_subscriptions
# => #<ActiveRecord::Associations::CollectionProxy [#<Unsubscribe::MailerSubscription>, #<Unsubscribe::MailerSubscription>] >
User.first.subscribed_to_mailer? "MarketingMailer"
# => true/false
User.first.to_sgid_for_mailer_subscription
# => #<SignedGlobalID:123 ...>
- Add
include Unsubscribe::Mailer
to aMailer
. - Optionally call
unsubscribe_settings
to set aname
anddescription
. This will be used in the unsubscribe page. - Set
mail to:
to@recipient.email
. The@recipient
is an instance of whatever Classinclude Unsubscribe::Owner
was added to.
class MarketingMailer < ApplicationMailer
include Unsubscribe::Mailer
unsubscribe_settings name: "Marketing Emails", description: "Updates on promotions and sales."
def promotion
mail to: @recipient.email
end
end
- Call the
Mailer
with arecipient
parameter.
MarketingMailer.with(
recipient: User.first
).promotion.deliver_now
Unsubscribe::MailerSubscription.first.action
# => "Unsubscribe from"/"Subscribe to"
Unsubscribe::MailerSubscription.first.call_to_action
# => "Unsubscribe from Marketing Emails"/"Subscribe to Marketing Emails"
Unsubscribe::MailerSubscription.first.description
# => "Updates on promotions and sales."
Unsubscribe::MailerSubscription.first.name
# => "Marketing Emails"
- Add the
@unsubscribe_url
link to theMailer
.
<%= link_to "Unsubscribe", @unsubscribe_url %>
Run rails g unsubscribe:views
if you want to modify the existing templates.
The language used for Unsubscribe::MailerSubscription#action
can be translated.
# config/locales/en.yml
en:
unsubscribe:
action:
subscribe: "Subscribe to"
unsubscribe: "Unsubscribe from"
If you'd like to open a PR please make sure the following things pass:
bin/rails test
bundle exec standardrb
The gem is available as open source under the terms of the MIT License.