module Decoradar

Decorates and serializes model into a hash

class PlayerDecorator

include Decoradar

attributes :id, :name, :team
attribute :shirt_number
attribute :nationality, include_if: -> model { model.has_nationality? }

def shirt_number
  model.team.shirt
end

def team
  TeamDecorator.new(model.team)
end

end

PlayerDecorator.new(Player.first).as_json

Constants

VERSION

Public Class Methods

included(base) click to toggle source
# File lib/decoradar.rb, line 26
def self.included(base)
  base.singleton_class.class_eval { attr_accessor :attribute_set }

  base.class_eval do
    self.attribute_set = Set.new

    extend Forwardable
    extend ClassMethods
    include InstanceMethods
  end
end