Module: JsonapiCompliable
- Defined in:
- lib/jsonapi_compliable/deserializable.rb,
lib/jsonapi_compliable.rb,
lib/jsonapi_compliable/dsl.rb,
lib/jsonapi_compliable/base.rb,
lib/jsonapi_compliable/errors.rb,
lib/jsonapi_compliable/version.rb,
lib/jsonapi_compliable/scope/base.rb,
lib/jsonapi_compliable/scope/sort.rb,
lib/jsonapi_compliable/scope/filter.rb,
lib/jsonapi_compliable/util/scoping.rb,
lib/jsonapi_compliable/scope/paginate.rb,
lib/jsonapi_compliable/scope/sideload.rb,
lib/jsonapi_compliable/scope/filterable.rb,
lib/jsonapi_compliable/util/field_params.rb,
lib/jsonapi_compliable/scope/extra_fields.rb,
lib/jsonapi_compliable/util/include_params.rb,
lib/jsonapi_compliable/scope/default_filter.rb
Overview
This will convert JSONAPI-compatible POST/PUT payloads into something Rails better understands. Example:
{ "data": { "type": "articles", "attributes": { "title": "the first article" }, "relationships": { "tags": { "data": [{ "type": "tags", "attributes": { "name": "One" } }, { "type": "tags", "attributes": { "name": "Two" } }] } } } }
Into:
{ article: { title: 'the first article', tags_attributes: [ { name: 'One' }, { name: 'Two' }, ] } }
Why we don't use AMS deserialization - AMS will:
- not support relationship data
- override foreign key incorrectly, ie post_id incorrectly becomes nil if post relation is nil, even if it is in the attributes payload
Usage:
In controller:
before_action :deserialize_jsonapi!, only: [:my_action]
Defined Under Namespace
Modules: Base, Deserializable, Errors, Scope, Util Classes: DSL
Constant Summary collapse
- VERSION =
"0.3.4"
Class Method Summary collapse
Class Method Details
.included(klass) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/jsonapi_compliable.rb', line 24 def self.included(klass) klass.instance_eval do include Base include Deserializable end end |