
Rails Design Patterns
Service objects, form objects, decorators, presenters, query objects, concerns
1What is a Service Object in Rails?
What is a Service Object in Rails?
답변
A Service Object is a plain Ruby class (PORO) that encapsulates complex business logic, typically a single operation. It extracts logic from controllers and models to maintain the Single Responsibility Principle (SRP). Typically, a service object exposes a single public method like call or execute, making it easy to test and reuse.
2What is the main advantage of using a Service Object instead of putting logic in the controller?
What is the main advantage of using a Service Object instead of putting logic in the controller?
답변
The main advantage is testability and reusability. A Service Object is an isolated Ruby class, easily testable in isolation without simulating the complete HTTP context of a controller. Additionally, the same logic can be called from different places (controllers, jobs, console) without code duplication.
3How to structure a Service Object with a clear naming convention?
How to structure a Service Object with a clear naming convention?
답변
The recommended convention is to use a verb followed by a noun, reflecting the action performed (e.g., CreateUser, ProcessPayment, SendInvitation). The service exposes a call method as its single entry point, and can be invoked via UserCreator.call(params) or UserCreator.new(params).call. This convention makes code self-documenting and predictable.
What is a Form Object and when to use it?
Which Ruby module to include in a Form Object to benefit from ActiveRecord validations?
+19 면접 질문