
Design Patterns trong Rails
Service objects, form objects, decorators, presenters, query objects, concerns
1Service Object trong Rails là gì?
Service Object trong Rails là gì?
Câu trả lời
Service Object là một lớp Ruby thuần (PORO) đóng gói logic nghiệp vụ phức tạp, thường là một thao tác duy nhất. Nó tách logic khỏi controller và model để duy trì Single Responsibility Principle (SRP). Thông thường, một service object chỉ expose một phương thức public duy nhất như call hoặc execute, giúp dễ kiểm thử và tái sử dụng.
2Lợi ích chính của việc dùng Service Object thay vì đặt logic trong controller là gì?
Lợi ích chính của việc dùng Service Object thay vì đặt logic trong controller là gì?
Câu trả lời
Lợi ích chính là khả năng kiểm thử và tái sử dụng. Service Object là một lớp Ruby độc lập, dễ kiểm thử riêng biệt mà không cần mô phỏng toàn bộ ngữ cảnh HTTP của controller. Ngoài ra, cùng một logic có thể được gọi từ nhiều nơi khác nhau (controller, job, console) mà không trùng lặp mã.
3Làm thế nào để cấu trúc một Service Object với quy ước đặt tên rõ ràng?
Làm thế nào để cấu trúc một Service Object với quy ước đặt tên rõ ràng?
Câu trả lời
Quy ước được khuyến nghị là dùng một động từ theo sau bởi một danh từ, phản ánh hành động được thực hiện (ví dụ: CreateUser, ProcessPayment, SendInvitation). Service expose phương thức call làm điểm vào duy nhất và có thể được gọi qua UserCreator.call(params) hoặc UserCreator.new(params).call. Quy ước này giúp mã tự mô tả và dễ đoán.
Form Object là gì và khi nào dùng nó?
Nên include module Ruby nào trong Form Object để tận dụng các validation của ActiveRecord?
+19 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Ruby on Rails khác
Kiến thức cơ bản về Ruby
Lập trình hướng đối tượng trong Ruby
Kiến thức cơ bản về Rails
Routing & Controllers
Kiến thức cơ bản về ActiveRecord
Views & Template ERB
Liên kết ActiveRecord
Truy vấn ActiveRecord nâng cao
Form Rails
Xác thực & Phân quyền
Asset Pipeline hiện đại & frontend
Chế độ API của Rails
Kiểm thử với RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Chiến lược Caching
Migration nâng cao
Rails Engines & ứng dụng mô-đun
Tối ưu hóa hiệu năng
Lập trình meta trong Ruby
Bảo mật Rails
GraphQL với Rails
Triển khai & Sản xuất
Monitoring & Logging
Chiến lược nâng cấp Rails
Nắm vững Ruby on Rails cho lần phỏng vấn tiếp theo
Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.
Bắt đầu miễn phí