بسم الله الرحمن الرحيم

Prerequisite

Ruby 3.0.0 Rails 6.1.3

Latar Belakang Masalah

Membuat fitur email notifikasi ke email admin apabila terdapat user baru yang mendaftar (signup) ke web aplikasi yang kita develop.

Pemecahan Masalah

Generate Mailer

Saya akan memberikan nama AdminMailer untuk fitur mailer yang akan dibuat.

$ rails g mailer AdminMailer

Perintah ini akan mengenerate file mailers dan juga directory views yang bernama admin_mailer.

 app
│  assets
│  channels
│  controllers
│  helpers
│  javascript
│  jobs
│  mailers
│ │  admin_mailer.rb
│ └  application_mailer.rb
│  models
└  views
│  admin_mailer
└  layouts
 bin
 config
 db
...

Konfigurasi Mailer

Modifikasi alamat from,

default from: 'from@example.com'

sesuai yang kita inginkan.

FILEapp/mailers/application_mailer.rb
1
2
3
4
class ApplicationMailer < ActionMailer::Base
  default from: "no-reply@siaga-covid19.herokuapp.com"
  layout "mailer"
end

Selanjutnya, modifikasi file admin_mailer.rb, yang sudah kita generate sebelumnya.

Kita akan mendefinisikan alamat email admin default to: dan juga mendefinisikan fungsi untuk new_user(user).

FILEapp/mailers/admin_mailer.rb
1
2
3
4
5
6
7
8
class AdminMailer < ApplicationMailer
  default to: "admin@siaga-covid19.herokuapp.com"

  def new_user(user)
    @user = user
    mail(subject: "SiagaCOVID19 - New User: #{user.email}")
  end
end

Saya membuat instance variable @user yang akan saya gunakan pada view template.

Mailer Views Template

Pada file app/mailers/admin_mailer.rb, kita sudah mendefinisikan sebuah method yang bernama new_user().

Seperti halnya controller, method tersebut juga merupakan action yang akan menghubungkan dengan view template.

Jadi kita akan membuat file bernama app/views/admin_mailer/new_user.html.erb.

FILEapp/views/admin_mailer/new_user.html.erb
1
2
3
<h1>New User!</h1>
<p>There is new user joined SiagaCOVID19:</p>
<h3><%= @user.email %></h3>

Template di atas, dapat teman-teman buat sesuai preferensi masing-masing.

Yang saya catat di atas, hanya contoh sederhana saja.

Models

Karena kita akan memberikan notifikasi email apabila terdapat user baru yang mendaftar, maka logika bisnis untuk mengirimkan notifikasi akan kita letakkan pada user model.

FILEapp/models/user.rb
1
2
3
4
5
6
7
class User < ApplicationRecord
  after_create :send_notification

  def send_notification
    AdminMailer.new_user(self).deliver
  end
end

Selesai!

Hasilnya

Apabila terdapat user baru yang mendaftarkan account, admin akan mendapatkan email seperti ini.

gambar_01

Template email ini, sesuai dengan template yang kita didefinisikan pada app/views/admin_mailer/new_user.html.erb.


Pesan Penulis

Sepertinya, segini dulu yang dapat saya tuliskan.

Selanjutnya, saya serahkan kepada imajinasi dan kreatifitas teman-teman. Hehe.

Mudah-mudahan dapat bermanfaat.

Terima kasih.

(^_^)

Referensi

  1. Rails Guides - Action Mailer Basics
    Diakses tanggal: 2021/03/26

  2. github.com/rails/rails/
    Diakses tanggal: 2021/03/26

  3. GoRails - Sending Emails in Rails with Mandrill
    Diakses tanggal: 2021/03/26


Penulis

bandithijo

BanditHijo adalah nama pena saya – meminjam istilah keren dari para penulis. Teman-teman menyebut saya sebagai GNU/Linux Enthusiast. Saya memang gemar mengutak-atik sistem operasi ini. Bukan karena hobi tapi karena saya perlu untuk menggunakannya. Hehe.

- Rizqi Nur Assyaufi

Berlangganan via Email

Jangan sampai ketinggalan kabar dan info terbaru mengenai BanditHijo (R)-Chive.
Ayo bergabung!
c2deb4abbcb1b30e9079c35732dca589f2d7b6e8