Sha256: a1b7fd751d38ecacf3a87ec22f73b4907a936163769af4219e1831eab2097220
Contents?: true
Size: 1.14 KB
Versions: 1
Compression:
Stored size: 1.14 KB
Contents
require 'singleton' require 'active_decorator/helpers' module ActiveDecorator class Decorator include Singleton def initialize @@decorators = {} end def decorate_if_model(obj) case obj when ActiveRecord::Base decorate obj when ActiveRecord::Relation class << obj def to_a_with_decorator arr = to_a_without_decorator arr.each do |model| ActiveDecorator::Decorator.instance.decorate model end end alias_method_chain :to_a, :decorator end when Array obj.each do |r| decorate_if_model r end end end def decorate(model) d = decorator_for model.class return model unless d model.extend d unless model.is_a? d end private def decorator_for(model_class) return @@decorators[model_class] if @@decorators.has_key? model_class decorator_name = "#{model_class.name}Decorator" d = decorator_name.constantize d.send :include, ActiveDecorator::Helpers @@decorators[model_class] = d rescue NameError end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_decorator-0.1.0 | lib/active_decorator/decorator.rb |