# Design Pattern Rails (Ruby on Rails) > Service objects, form objects, decorators, presenters, query objects, concerns - 22 pertanyaan wawancara - Senior - [Pertanyaan Wawancara: Ruby on Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara.md) ## 1. Apa itu Service Object di Rails? **Jawaban** Service Object adalah kelas Ruby biasa (PORO) yang mengenkapsulasi logika bisnis kompleks, biasanya satu operasi tunggal. Ia mengekstrak logika dari controller dan model untuk menjaga Single Responsibility Principle (SRP). Biasanya, sebuah service object mengekspos satu metode publik seperti call atau execute, sehingga mudah diuji dan digunakan kembali. ## 2. Apa keuntungan utama menggunakan Service Object daripada menempatkan logika di controller? **Jawaban** Keuntungan utama adalah kemudahan pengujian dan penggunaan kembali. Service Object adalah kelas Ruby yang terisolasi, mudah diuji secara terpisah tanpa harus mensimulasikan konteks HTTP lengkap sebuah controller. Selain itu, logika yang sama dapat dipanggil dari tempat berbeda (controller, job, console) tanpa duplikasi kode. ## 3. Bagaimana cara menyusun Service Object dengan konvensi penamaan yang jelas? **Jawaban** Konvensi yang direkomendasikan adalah menggunakan kata kerja diikuti kata benda, mencerminkan aksi yang dilakukan (mis. CreateUser, ProcessPayment, SendInvitation). Layanan mengekspos metode call sebagai satu-satunya titik masuk, dan dapat dipanggil melalui UserCreator.call(params) atau UserCreator.new(params).call. Konvensi ini membuat kode terdokumentasi sendiri dan dapat diprediksi. ## 19 pertanyaan lagi tersedia - Apa itu Form Object dan kapan menggunakannya? - Modul Ruby mana yang disertakan dalam Form Object untuk memanfaatkan validasi ActiveRecord? Daftar gratis: https://sharpskill.dev/id/login ## Topik wawancara Ruby on Rails lainnya - [Dasar-Dasar Ruby](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/ruby-basics.md): 25 pertanyaan, Junior - [Pemrograman Berorientasi Objek di Ruby](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/ruby-oop.md): 20 pertanyaan, Junior - [Dasar-Dasar Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-fundamentals.md): 18 pertanyaan, Junior - [Routing & Controllers](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/routing-controllers.md): 22 pertanyaan, Junior - [Dasar-Dasar ActiveRecord](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-record-basics.md): 25 pertanyaan, Junior - [Views & Template ERB](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/views-erb-templates.md): 20 pertanyaan, Junior - [Asosiasi ActiveRecord](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-record-associations.md): 24 pertanyaan, Mid-Level - [Kueri ActiveRecord Lanjutan](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-record-queries.md): 28 pertanyaan, Mid-Level - [Formulir Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-forms.md): 20 pertanyaan, Mid-Level - [Autentikasi & Otorisasi](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/authentication-authorization.md): 22 pertanyaan, Mid-Level - [Asset Pipeline modern & frontend](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-asset-pipeline.md): 18 pertanyaan, Mid-Level - [Mode API Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-api-mode.md): 20 pertanyaan, Mid-Level - [Pengujian dengan RSpec](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-testing-rspec.md): 24 pertanyaan, Mid-Level - [ActiveJob & Background Jobs](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-job-background-jobs.md): 20 pertanyaan, Mid-Level - [ActionCable & WebSockets](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/action-cable-websockets.md): 18 pertanyaan, Mid-Level - [ActionMailer](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/action-mailer.md): 18 pertanyaan, Mid-Level - [ActiveStorage](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-storage.md): 20 pertanyaan, Mid-Level - [Strategi Caching](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/caching-strategies.md): 20 pertanyaan, Mid-Level - [Migrasi tingkat lanjut](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/database-migrations-advanced.md): 20 pertanyaan, Mid-Level - [Rails Engines & Aplikasi Modular](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-engines-modular-apps.md): 18 pertanyaan, Senior - [Optimasi Performa](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/performance-optimization.md): 26 pertanyaan, Senior - [Metaprogramming Ruby](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/ruby-metaprogramming.md): 20 pertanyaan, Senior - [Keamanan Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-security.md): 22 pertanyaan, Senior - [GraphQL dengan Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/graphql-rails.md): 20 pertanyaan, Senior - [Deployment & Produksi](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-deployment-production.md): 20 pertanyaan, Senior - [Monitoring & Logging](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/monitoring-logging.md): 20 pertanyaan, Senior - [Strategi Upgrade Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-upgrade-strategies.md): 18 pertanyaan, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-design-patterns