使用 Draper 裝飾模型

Draper 按照慣例自動將模型與其裝飾器匹配。

# app/decorators/user_decorator.rb
class UserDecorator < Draper::Decorator
  def full_name
    "#{object.first_name} #{object.last_name}"
  end

  def created_at
    Time.use_zone(h.current_user.timezone) do
      object.created_at.strftime("%A, %d %b %Y %l:%M %p")
    end
  end
end

給定包含 ActiveRecord 物件的 @user 變數,你可以通過在 @user 上呼叫 #decorate 來訪問你的裝飾器,或者如果你想要特定的話,可以通過指定 Draper 類來訪問。

<% user = @user.decorate %><!-- OR -->
<% user = UserDecorator.decorate(@user) %>
<h1><%= user.full_name %></h1>
<h3>joined: <%= user.created_at %></h3>