Sha256: 2e4fca62ea8fa404c7fdef42f9d1e5fd768be38426b4a0c04c53058fdac3f293

Contents?: true

Size: 971 Bytes

Versions: 65

Compression:

Stored size: 971 Bytes

Contents

module JsonapiCompliable
  # If the object we are serializing has the instance variable
  # +@_jsonapi_temp_id+, render +temp-id+ in the {http://jsonapi.org/format/#document-resource-identifier-objects resource identifier}
  #
  # Why? Well, when the request is a nested POST, creating the main entity as
  # well as relationships, we need some way of telling the client, "hey, the
  # object you have in memory, that you just sent to the server, has been
  # persisted and now has id X".
  #
  # +@_jsonapi_temp_id+ is set within this library. You should never have to
  # reference it directly.
  module SerializableTempId
    # Common interface for jsonapi-rb extensions
    def as_jsonapi(*)
      super.tap do |hash|
        if temp_id = @object.instance_variable_get(:'@_jsonapi_temp_id')
          hash[:'temp-id'] = temp_id
        end
      end
    end
  end
end

JSONAPI::Serializable::Resource.class_eval do
  prepend JsonapiCompliable::SerializableTempId
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
jsonapi_compliable-0.11.34 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.33 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.32 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.31 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.30 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.29 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.28 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.27 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.26 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.25 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-1.0.alpha.2 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.24 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.23 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.22 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.21 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.20 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.19 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.18 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.17 lib/jsonapi_compliable/extensions/temp_id.rb
jsonapi_compliable-0.11.16 lib/jsonapi_compliable/extensions/temp_id.rb