如何使用同一个表为一组模型创建装饰器?

时间:2014-02-03 12:05:44

标签: ruby-on-rails ruby-on-rails-3 decorator draper

我有一个Rails项目,它有一大堆模型都通过单表继承使用相同的表。他们都是不同类型的组织。

是否可以使用draper gem来简化我的模型而无需为从组织模型继承的每个模型创建装饰器?

1 个答案:

答案 0 :(得分:1)

您可以使用#decorate方法显式装饰对象。

应用程序/装饰/ organization_decorator.rb:

class OrganizationDecorator < Draper::Decorator
  delegate_all
end

应用程序/控制器/ organizations_controller.rb:

class OrganizationsController < ApplicationController

  def show
    @organization = OrganizationDecorator.decorate(Organization.find(params[:id]))
  end
end

您也可以尝试:

应用程序/控制器/ organizations_controller.rb:

class OrganizationsController < ApplicationController

  decorates_assigned :organization, with: OrganizationDecorator

  def show
    @organization = Organization.find(params[:id])
  end
end