module AbcJsonapi::Serializer
Attributes
includes[R]
meta[R]
relationships[R]
resource[R]
resource_attributes[R]
resource_type[R]
result_hash[R]
virtual_attributes[R]
Public Class Methods
new(resource, options = {})
click to toggle source
# File lib/abc_jsonapi/serializer.rb, line 16 def initialize(resource, options = {}) @resource = resource @result_hash = { data: nil } @resource_type = self.class.resource_type @resource_attributes = self.class.resource_attributes @relationships = self.class.relationships @virtual_attributes = self.class.virtual_attributes @includes = options[:include] @meta = options[:meta] end
Public Instance Methods
serializable_hash()
click to toggle source
# File lib/abc_jsonapi/serializer.rb, line 27 def serializable_hash result_hash[:meta] = meta if meta.present? result_hash[:data] = data_hash result_hash[:included] = included_hash if @includes.present? result_hash end
serialized_json()
click to toggle source
# File lib/abc_jsonapi/serializer.rb, line 34 def serialized_json ActiveSupport::JSON.encode(serializable_hash) end
Private Instance Methods
data_hash()
click to toggle source
# File lib/abc_jsonapi/serializer.rb, line 91 def data_hash if resource.is_a?(Enumerable) AbcJsonapi::Collection.new( collection: resource, resource_type: resource_type, resource_attributes: resource_attributes, virtual_attributes: virtual_attributes, relationships: relationships ).serializable_hash else AbcJsonapi::Model.new( model: resource, resource_type: resource_type, resource_attributes: resource_attributes, virtual_attributes: virtual_attributes, relationships: relationships ).serializable_hash end end
included_hash()
click to toggle source
# File lib/abc_jsonapi/serializer.rb, line 79 def included_hash AbcJsonapi::IncludedResource.new( resource: resource, includes: includes, serializer_namespace: namespace ).serializable_hash end
namespace()
click to toggle source
# File lib/abc_jsonapi/serializer.rb, line 87 def namespace self.class.name.gsub(/()?\w+Serializer$/, '') end