Module: Decoro::Helpers

Defined in:
lib/decoro/helpers.rb

Instance Method Summary collapse

Instance Method Details

#decorate(model, decorator_class = nil) {|decorator| ... } ⇒ Object

Yields:

  • (decorator)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/decoro/helpers.rb', line 5

def decorate(model, decorator_class = nil)
  array = nil
  klass = decorator_class

  if model.is_a? Array
    array = model
    model = model.first
    klass ||= "#{model.class}Decorator".constantize
  elsif model.is_a? ActiveRecord::Relation
    klass ||= "#{model.name.pluralize}Decorator".constantize
  else
    klass ||= "#{model.class}Decorator".constantize
  end

  decorator = array ? array.map { |m| klass.new(m) } : klass.new(model)
  yield(decorator) if block_given?
end