Class: JsonApi::Serializer
- Inherits:
-
Object
- Object
- JsonApi::Serializer
- Defined in:
- lib/json_api_ruby/serializer.rb
Instance Method Summary collapse
- #assemble_included_data(relationships) ⇒ Object
-
#initialize(object, options) ⇒ Serializer
constructor
A new instance of Serializer.
- #to_hash ⇒ Object
Constructor Details
#initialize(object, options) ⇒ Serializer
Returns a new instance of Serializer.
23 24 25 26 27 28 29 |
# File 'lib/json_api_ruby/serializer.rb', line 23 def initialize(object, ) = .fetch('meta', Hash.new).stringify_keys @object = object @includes = .fetch('include', []) resource_name = "#{@object.class.to_s.underscore}_resource".classify @resource_class = .fetch('resource_class', resource_name) end |
Instance Method Details
#assemble_included_data(relationships) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/json_api_ruby/serializer.rb', line 49 def assemble_included_data(relationships) relationships.flat_map do |relationship| next if relationship.resources.blank? relationship.resources.map(&:to_hash) end.compact end |
#to_hash ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/json_api_ruby/serializer.rb', line 31 def to_hash resource_klass = Resources::Discovery.resource_for_name(@object, resource_class: @resource_class) resource = resource_klass.new(@object, include: @includes) serialized = { 'data' => resource.to_hash } relationships = resource.relationships included_data = assemble_included_data(relationships) if included_data.present? included_data.uniq! do |inc_data| inc_data['id'] + inc_data['type'] end serialized['included'] = included_data end serialized['meta'] = if .present? serialized end |