我有STI模型
#a/m/document.rb
class Document < ActiveRecord::Base
end
#a/m/document/static.rb
class Document::Static < Document
end
#a/m/document/dynamic.rb
class Document::Dynamic < Document
end我正在使用draper gem来装饰我的模型
# a/d/document_decorator.rb
class DocumentDecorator < ApplicationDecorator
end
# a/d/document/static_decorator.rb
class Document::StaticDecorator < DocumentDecorator
def foo
'it works 1'
end
end
# a/d/document/dynamic_decorator.rb
class Document::DynamicDecorator < DocumentDecorator
def foo
'it works 2'
end
end有没有可能告诉draper用合适的STI类装饰器自动装饰模型?如下所示:
a = Document.last #<Document::Static ...
a.type #Document::Static
b = DocumentDecorator.decorate(a)
b.class # Document::StaticDecorator
b.foo # "it works 1"发布于 2012-08-22 18:26:09
我花了一段时间才发现我可以做到
resource.decorate它会找到专属的装饰者
a = Document.last #<Document::Static ...
a.type #Document::Static
b = a.decorate
b.class # Document::StaticDecorator如果需要使用文档装饰器显式修饰对象,请执行此操作
a = Document.last #<Document::Static ...
a.type #Document::Static
b = DocumentDecorator.decorate a
b.class # DocumentDecoratorhttps://stackoverflow.com/questions/11900754
复制相似问题