Sha256: 0789c8f2031d6d9d29183bece31dbe8bb19a60cb92a9a428dff004fee850ce9b
Contents?: true
Size: 1.71 KB
Versions: 1
Compression:
Stored size: 1.71 KB
Contents
module ActiveModelSerializers module Adapter class JsonApi class ResourceIdentifier def self.type_for(class_name, serializer_type = nil, transform_options = {}) if serializer_type raw_type = serializer_type else inflection = if ActiveModelSerializers.config.jsonapi_resource_type == :singular :singularize else :pluralize end raw_type = class_name.underscore raw_type = ActiveSupport::Inflector.public_send(inflection, raw_type) raw_type .gsub!('/'.freeze, ActiveModelSerializers.config.jsonapi_namespace_separator) raw_type end JsonApi.send(:transform_key_casing!, raw_type, transform_options) end def self.for_type_with_id(type, id, options) return nil if id.blank? { id: id.to_s, type: type_for(:no_class_needed, type, options) } end # {http://jsonapi.org/format/#document-resource-identifier-objects Resource Identifier Objects} def initialize(serializer, options) @id = id_for(serializer) @type = type_for(serializer, options) end def as_json return nil if id.blank? { id: id, type: type } end protected attr_reader :id, :type private def type_for(serializer, transform_options) self.class.type_for(serializer.object.class.name, serializer._type, transform_options) end def id_for(serializer) serializer.read_attribute_for_serialization(:id).to_s end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_model_serializers-0.10.6 | lib/active_model_serializers/adapter/json_api/resource_identifier.rb |