Module: AsJsonRepresentations

Defined in:
lib/as_json_representations.rb,
lib/as_json_representations/version.rb,
lib/as_json_representations/collection.rb

Defined Under Namespace

Modules: ClassMethods, Collection

Constant Summary collapse

VERSION =
'0.4.3'

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/as_json_representations.rb', line 45

def self.included(base)
  base.extend ClassMethods

  base.class_eval do
    eval %{
      def as_json(options={})
        if !options[:representation] && defined?(super)
          super(options)
        else
          #{base}.render_representation(self, options)
        end
      end
    }

    def representation(name, options={})
      as_json(options.merge(representation: name))
    end

    def self.included(base)
      return unless base.class == Module
      AsJsonRepresentations.send(:included, base)
      base.instance_variable_set :@parent_entity, self
    end
  end
end