Service Object pada Ruby on Rails
Tutorial service object ini akan memisahkan bisnis logic dan logic aplikasi agar mudah di maintenance dan agar bisa scalabel
Apa itu service object?
pola yang memungkinkan Anda memisahkan logika bisnis dan elemen lain dari kontroler dan model, yang memungkinkan model menjadi lapisan data dan kontroler menjadi titik masuk API.
Service object,disini kita akan membuat class yang akan bertanggung jawab terhadap logic bisnis saja dan hanya akan ada 1 method public untuk satu task yang dikerjakan
kapan kita harus pake service object?
1. ada proses data yang kompleks atau butuh terhubung dulu ke external API, dengan ini kamu dapat encapsulasi komplex proses agar bisa di manage
2. bisnis rules yang komplex
3. butuh integrasi dengan third-party integrations
Langkah :
Pertama kita akan buat folder di app/services
buat app/services/user_registration.rb
class UserRegistration
extend LightService::Organizer
def self.call(params)
with(params: params).reduce(
ValidateUserInput,
CreateUser
)
end
end
code ini akan handle membuat satu public method utk call calss UserRegistration dan akan menjalankan action ValidateUserInput, CreateUser
selanjutnya kita buat model User
rails g model User
selanjutnya buat class CreateUser.rb di app/services/user_registration/create_user.rb seperti ini
class UserRegistration::CreateUser
extend LightService::Action
expects :validated_params
promises :user
executed do |context|
user = User.new(context.validated_params)
if user.save
context.user = user
else
context.fail!(user.errors.full_messages.to_sentence)
end
end
end
class UserRegistration akan eksekusi pembuatan user
lalu buat app/services/user_registration/validate_user_input.rb seperti dibawah ini :
class UserRegistration::ValidateUserInput
extend LightService::Action
expects :params
promises :validated_params
executed do |context|
if context.params[:email].blank?
context.fail("Please Fill Email !! ")
end
context.validated_params = context.params
end
end
class ValidateUserInput, akan melakukan validasi input jika email kosong
langkah terakhir kita bisa eksekusi service object nya seperti ini di rails console
result = UserRegistration.call(email: 'jaka@testdoterb.com', name: 'Jaka Pratama')
Berita Terkini
Berita Terbaru
Daftar Terbaru
News
Jasa Impor China
Berita Terbaru
Flash News
RuangJP
Pemilu
Berita Terkini
Prediksi Bola
Technology
Otomotif
Berita Terbaru
Teknologi
Berita terkini
Berita Pemilu
Berita Teknologi
Hiburan
master Slote
Berita Terkini
Pendidikan
Resep
Jasa Backlink
Slot gacor terpercaya
Anime Batch