Sejak memasang "dark" theme, saya cenderung menjadi malas menulis. Untuk sementara, dark theme saya disable dulu yaa. Terima kasih (^_^) (bandithijo, 2024/09/15) ●
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.
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).
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.
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.
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.
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
-
Rails Guides - Action Mailer Basics
Diakses tanggal: 2021/03/26 -
github.com/rails/rails/
Diakses tanggal: 2021/03/26 -
GoRails - Sending Emails in Rails with Mandrill
Diakses tanggal: 2021/03/26
Lisensi
Atribusi-NonKomersial-BerbagiSerupa 4.0 Internasional (CC BY-NC-SA 4.0)
Penulis
My journey kicks off from reading textbooks as a former Medical Student to digging bugs as a Software Engineer – a delightful rollercoaster of career twists. Embracing failure with the grace of a Cat avoiding water, I've seamlessly transitioned from Stethoscope to Keyboard. Armed with ability for learning and adapting faster than a Heart Beat, I'm on a mission to turn Code into a Product.
- Rizqi Nur Assyaufi