---
title: Use decorators for view logic
impact: MEDIUM
impactDescription: Keep models and views clean by separating presentation logic.
tags: rails, architecture, decorator, presentation
---

## Use decorators for view logic

Keep models and views clean by separating presentation logic. Use decorators (e.g., using the Draper gem or simple delegate classes) to format model data for the view layer.

**Incorrect (Logic in model):**

```ruby
class User < ApplicationRecord
  def full_name_for_display
    "#{first_name} #{last_name} (#{email})"
  end
end
```

**Correct (Logic in decorator):**

```ruby
class UserDecorator < Draper::Decorator
  delegate_all
  def display_name
    "#{object.first_name} #{object.last_name} (#{object.email})"
  end
end
```

**Tools:** Manual Review
