使用 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>