From 9e0f0bedf35e8b3fd74cd749af895f85ee162849 Mon Sep 17 00:00:00 2001 From: Lee Richmond Date: Wed, 7 Jun 2017 10:21:55 -0400 Subject: [PATCH 1/2] Update documentation for Resource#context --- .yardopts | 1 + docs/Jsonapi.html | 115 ++++ docs/Jsonapi/ResourceGenerator.html | 325 +++++++++++ docs/JsonapiCompliable.html | 213 ++++++- docs/JsonapiCompliable/Adapters.html | 2 +- docs/JsonapiCompliable/Adapters/Abstract.html | 2 +- .../Adapters/ActiveRecord.html | 112 ++-- .../Adapters/ActiveRecordSideloading.html | 12 +- docs/JsonapiCompliable/Adapters/Null.html | 2 +- docs/JsonapiCompliable/Base.html | 230 ++++---- docs/JsonapiCompliable/Deserializer.html | 109 +++- docs/JsonapiCompliable/Errors.html | 2 +- docs/JsonapiCompliable/Errors/BadFilter.html | 2 +- .../Errors/StatNotFound.html | 2 +- .../Errors/UnsupportedPageSize.html | 2 +- .../Errors/ValidationError.html | 2 +- docs/JsonapiCompliable/Extensions.html | 2 +- .../Extensions/BooleanAttribute.html | 2 +- .../BooleanAttribute/ClassMethods.html | 2 +- .../Extensions/ExtraAttribute.html | 2 +- .../ExtraAttribute/ClassMethods.html | 2 +- docs/JsonapiCompliable/Query.html | 36 +- docs/JsonapiCompliable/Rails.html | 2 +- docs/JsonapiCompliable/Resource.html | 531 ++++++++++------- docs/JsonapiCompliable/Scope.html | 2 +- docs/JsonapiCompliable/Scoping.html | 2 +- docs/JsonapiCompliable/Scoping/Base.html | 2 +- .../Scoping/DefaultFilter.html | 2 +- .../Scoping/ExtraFields.html | 2 +- docs/JsonapiCompliable/Scoping/Filter.html | 2 +- .../JsonapiCompliable/Scoping/Filterable.html | 4 +- docs/JsonapiCompliable/Scoping/Paginate.html | 2 +- docs/JsonapiCompliable/Scoping/Sort.html | 2 +- .../JsonapiCompliable/SerializableTempId.html | 2 +- docs/JsonapiCompliable/Sideload.html | 307 +++++++--- docs/JsonapiCompliable/Stats.html | 2 +- docs/JsonapiCompliable/Stats/DSL.html | 2 +- docs/JsonapiCompliable/Stats/Payload.html | 2 +- docs/JsonapiCompliable/Util.html | 2 +- docs/JsonapiCompliable/Util/FieldParams.html | 2 +- docs/JsonapiCompliable/Util/Hash.html | 2 +- .../JsonapiCompliable/Util/IncludeParams.html | 2 +- docs/JsonapiCompliable/Util/Persistence.html | 2 +- .../Util/RelationshipPayload.html | 2 +- .../JsonapiCompliable/Util/RenderOptions.html | 2 +- .../Util/ValidationResponse.html | 2 +- docs/_index.html | 14 +- docs/class_list.html | 2 +- docs/file.README.html | 6 +- docs/index.html | 6 +- docs/method_list.html | 550 ++++++++++-------- docs/top-level-namespace.html | 4 +- lib/jsonapi_compliable/resource.rb | 16 +- 53 files changed, 1853 insertions(+), 808 deletions(-) create mode 100644 docs/Jsonapi.html create mode 100644 docs/Jsonapi/ResourceGenerator.html diff --git a/.yardopts b/.yardopts index 461cf11..f1556f5 100644 --- a/.yardopts +++ b/.yardopts @@ -1 +1,2 @@ --plugin classmethods +--output-dir docs diff --git a/docs/Jsonapi.html b/docs/Jsonapi.html new file mode 100644 index 0000000..85f991f --- /dev/null +++ b/docs/Jsonapi.html @@ -0,0 +1,115 @@ + + + + + + + Module: Jsonapi + + — Documentation by YARD 0.9.9 + + + + + + + + + + + + + + + + + + + +
+ + +

Module: Jsonapi + + + +

+
+ + + + + + + + + + + +
+
Defined in:
+
lib/generators/jsonapi/resource_generator.rb
+
+ +
+ +

Defined Under Namespace

+

+ + + + + Classes: ResourceGenerator + + +

+ + + + + + + + + +
+ + + +
+ + \ No newline at end of file diff --git a/docs/Jsonapi/ResourceGenerator.html b/docs/Jsonapi/ResourceGenerator.html new file mode 100644 index 0000000..81ff15f --- /dev/null +++ b/docs/Jsonapi/ResourceGenerator.html @@ -0,0 +1,325 @@ + + + + + + + Class: Jsonapi::ResourceGenerator + + — Documentation by YARD 0.9.9 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: Jsonapi::ResourceGenerator + + + +

+
+ +
+
Inherits:
+
+ Rails::Generators::NamedBase + +
    +
  • Object
  • + + + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
lib/generators/jsonapi/resource_generator.rb
+
+ +
+ + + + + + + + + +

+ Instance Method Summary + collapse +

+ + + + + + + +
+

Instance Method Details

+ + +
+

+ + #copy_resource_fileObject + + + + + +

+ + + + +
+
+
+
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+
+
# File 'lib/generators/jsonapi/resource_generator.rb', line 12
+
+def copy_resource_file
+  unless @options['no-controller']
+    to = File.join('app/controllers', class_path, "#{file_name.pluralize}_controller.rb")
+    template('controller.rb.erb', to)
+  end
+
+  unless @options['no-serializer']
+    to = File.join('app/serializers', class_path, "serializable_#{file_name}.rb")
+    template('serializer.rb.erb', to)
+  end
+
+  unless 'ApplicationResource'.safe_constantize
+    to = File.join('app/resources', class_path, "application_resource.rb")
+    template('application_resource.rb.erb', to)
+  end
+
+  unless @options['no-payload']
+    to = File.join('spec/payloads', class_path, "#{file_name}.rb")
+    template('payload.rb.erb', to)
+  end
+
+  unless @options['no-strong-resources']
+    inject_into_file 'config/initializers/strong_resources.rb', after: "StrongResources.configure do\n" do <<-STR
+  strong_resource :#{file_name} do
+# Your attributes go here, e.g.
+# attribute :name, :string
+  end
+
+    STR
+    end
+  end
+
+  unless @options['no-route']
+    inject_into_file 'config/routes.rb', after: "scope '/api' do\n    scope '/v1' do\n" do <<-STR
+  resources :#{type}
+    STR
+    end
+  end
+
+  unless @options['no-test']
+    to = File.join "spec/api/v1/#{file_name.pluralize}",
+      class_path,
+      "index_spec.rb"
+    template('index_request_spec.rb.erb', to)
+
+    to = File.join "spec/api/v1/#{file_name.pluralize}",
+      class_path,
+      "show_spec.rb"
+    template('show_request_spec.rb.erb', to)
+
+    to = File.join "spec/api/v1/#{file_name.pluralize}",
+      class_path,
+      "create_spec.rb"
+    template('create_request_spec.rb.erb', to)
+
+    to = File.join "spec/api/v1/#{file_name.pluralize}",
+      class_path,
+      "update_spec.rb"
+    template('update_request_spec.rb.erb', to)
+
+    to = File.join "spec/api/v1/#{file_name.pluralize}",
+      class_path,
+      "destroy_spec.rb"
+    template('destroy_request_spec.rb.erb', to)
+  end
+
+  to = File.join('app/resources', class_path, "#{file_name}_resource.rb")
+  template('resource.rb.erb', to)
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file diff --git a/docs/JsonapiCompliable.html b/docs/JsonapiCompliable.html index 4ade27b..7aba58c 100644 --- a/docs/JsonapiCompliable.html +++ b/docs/JsonapiCompliable.html @@ -104,7 +104,7 @@

Constant Summary

VERSION =
-
"0.6.4"
+
"0.7.0"
@@ -125,6 +125,50 @@

  • + .context ⇒ Object + + + + + + + + + + + private + + +
    + +
  • + + +
  • + + + .context=(val) ⇒ Object + + + + + + + + + + + private + + +
    + +
  • + + +
  • + + .included(klass) ⇒ Object @@ -139,6 +183,28 @@

    +
    + +

  • + + +
  • + + + .with_context(obj, namespace) ⇒ Object + + + + + + + + + + + private + +
  • @@ -154,7 +220,93 @@

    Class Method Details

    -

    +

    + + .contextObject + + + + + +

    +
    +

    + This method is part of a private API. + You should avoid using this method if possible, as it may be removed or be changed in the future. +

    + + +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +47
    +48
    +49
    +
    +
    # File 'lib/jsonapi_compliable.rb', line 47
    +
    +def self.context
    +  Thread.current[:context] ||= {}
    +end
    +
    +
    + +
    +

    + + .context=(val) ⇒ Object + + + + + +

    +
    +

    + This method is part of a private API. + You should avoid using this method if possible, as it may be removed or be changed in the future. +

    + + +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +52
    +53
    +54
    +
    +
    # File 'lib/jsonapi_compliable.rb', line 52
    +
    +def self.context=(val)
    +  Thread.current[:context] = val
    +end
    +
    +
    + +
    +

    .included(klass) ⇒ Object @@ -185,6 +337,61 @@

    +

    + +
    +

    + + .with_context(obj, namespace) ⇒ Object + + + + + +

    +
    +

    + This method is part of a private API. + You should avoid using this method if possible, as it may be removed or be changed in the future. +

    + + +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +
    +
    # File 'lib/jsonapi_compliable.rb', line 57
    +
    +def self.with_context(obj, namespace)
    +  begin
    +    prior = self.context
    +    self.context = { object: obj, namespace: namespace }
    +    yield
    +  ensure
    +    self.context = prior
    +  end
    +end
    +
    @@ -192,7 +399,7 @@

    diff --git a/docs/JsonapiCompliable/Adapters.html b/docs/JsonapiCompliable/Adapters.html index 4de58f6..61baa92 100644 --- a/docs/JsonapiCompliable/Adapters.html +++ b/docs/JsonapiCompliable/Adapters.html @@ -109,7 +109,7 @@

    Defined Under Namespace

    diff --git a/docs/JsonapiCompliable/Adapters/Abstract.html b/docs/JsonapiCompliable/Adapters/Abstract.html index 9295e48..117e8a7 100644 --- a/docs/JsonapiCompliable/Adapters/Abstract.html +++ b/docs/JsonapiCompliable/Adapters/Abstract.html @@ -2275,7 +2275,7 @@

    diff --git a/docs/JsonapiCompliable/Adapters/ActiveRecord.html b/docs/JsonapiCompliable/Adapters/ActiveRecord.html index 4f77d71..99b499a 100644 --- a/docs/JsonapiCompliable/Adapters/ActiveRecord.html +++ b/docs/JsonapiCompliable/Adapters/ActiveRecord.html @@ -544,17 +544,17 @@

     
     
    -71
    -72
    -73
     74
     75
     76
     77
    -78
    +78 +79 +80 +81 -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 71
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 74
     
     def associate(parent, child, association_name, association_type)
       if association_type == :has_many
    @@ -663,12 +663,12 @@ 

     
     
    -29
    -30
    -31
    +32 +33 +34

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 29
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 32
     
     def average(scope, attr)
       scope.average(attr).to_f
    @@ -776,14 +776,20 @@ 

    23 24 25 -26

    +26 +27 +28 +29
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 23
     
     def count(scope, attr)
    -  column = attr == :total ? :all : attr
    -  scope.uniq.count(column)
    +  if attr.to_sym == :total
    +    scope.distinct.count
    +  else
    +    scope.distinct.count(attr)
    +  end
     end
    @@ -893,14 +899,14 @@

     
     
    -81
    -82
    -83
     84
    -85
    +85 +86 +87 +88

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 81
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 84
     
     def create(model_class, create_params)
       instance = model_class.new(create_params)
    @@ -1015,14 +1021,14 @@ 

     
     
    -95
    -96
    -97
     98
    -99
    +99 +100 +101 +102

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 95
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 98
     
     def destroy(model_class, id)
       instance = model_class.find(id)
    @@ -1253,12 +1259,12 @@ 

     
     
    -39
    -40
    -41
    +42 +43 +44

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 39
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 42
     
     def maximum(scope, attr)
       scope.maximum(attr)
    @@ -1362,12 +1368,12 @@ 

     
     
    -44
    -45
    -46
    +47 +48 +49

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 44
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 47
     
     def minimum(scope, attr)
       scope.minimum(attr)
    @@ -1726,12 +1732,12 @@ 

     
     
    -49
    -50
    -51
    +52 +53 +54

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 49
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 52
     
     def resolve(scope)
       scope.to_a
    @@ -1800,12 +1806,12 @@ 

     
     
    -64
    -65
    -66
    +67 +68 +69

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 64
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 67
     
     def sideloading_module
       JsonapiCompliable::Adapters::ActiveRecordSideloading
    @@ -1909,12 +1915,12 @@ 

     
     
    -34
    -35
    -36
    +37 +38 +39

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 34
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 37
     
     def sum(scope, attr)
       scope.sum(attr)
    @@ -1995,14 +2001,14 @@ 

     
     
    -57
    -58
    -59
     60
    -61
    +61 +62 +63 +64

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 57
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 60
     
     def transaction(model_class)
       model_class.transaction do
    @@ -2117,14 +2123,14 @@ 

     
     
    -88
    -89
    -90
     91
    -92
    +92 +93 +94 +95

    -
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 88
    +      
    # File 'lib/jsonapi_compliable/adapters/active_record.rb', line 91
     
     def update(model_class, update_params)
       instance = model_class.find(update_params.delete(:id))
    @@ -2141,7 +2147,7 @@ 

    diff --git a/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html b/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html index be15e80..6b8cf75 100644 --- a/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html +++ b/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html @@ -329,7 +329,7 @@

    fk = foreign_key.values.first _scope = scope - allow_sideload association_name, resource: resource do + allow_sideload association_name, type: :habtm, foreign_key: foreign_key, primary_key: primary_key, resource: resource do scope do |parents| parent_ids = parents.map { |p| p.send(primary_key) } parent_ids.uniq! @@ -466,7 +466,7 @@

    def has_one(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, &blk) _scope = scope - allow_sideload association_name, resource: resource do + allow_sideload association_name, type: :has_one, foreign_key: foreign_key, primary_key: primary_key, resource: resource do scope do |parents| parent_ids = parents.map { |p| p.send(primary_key) } _scope.call.where(foreign_key => parent_ids.uniq.compact) @@ -536,14 +536,14 @@

    # File 'lib/jsonapi_compliable/adapters/active_record_sideloading.rb', line 96
     
     def polymorphic_belongs_to(association_name, group_by:, groups:, &blk)
    -  allow_sideload association_name, polymorphic: true do
    -    group_by(&group_by)
    +  allow_sideload association_name, type: :polymorphic_belongs_to, polymorphic: true do
    +    group_by(group_by)
     
         groups.each_pair do |type, config|
           primary_key = config[:primary_key] || :id
           foreign_key = config[:foreign_key]
     
    -      allow_sideload type, resource: config[:resource] do
    +      allow_sideload type, parent: self, primary_key: primary_key, foreign_key: foreign_key, type: :belongs_to, resource: config[:resource] do
             scope do |parents|
               parent_ids = parents.map { |p| p.send(foreign_key) }
               parent_ids.compact!
    @@ -572,7 +572,7 @@ 

    diff --git a/docs/JsonapiCompliable/Adapters/Null.html b/docs/JsonapiCompliable/Adapters/Null.html index 7d72921..39e7cc4 100644 --- a/docs/JsonapiCompliable/Adapters/Null.html +++ b/docs/JsonapiCompliable/Adapters/Null.html @@ -1672,7 +1672,7 @@

    diff --git a/docs/JsonapiCompliable/Base.html b/docs/JsonapiCompliable/Base.html index 8ccb1f4..501b5ec 100644 --- a/docs/JsonapiCompliable/Base.html +++ b/docs/JsonapiCompliable/Base.html @@ -224,7 +224,7 @@

  • - #jsonapi_scope(scope, opts = {}) ⇒ Scope + #jsonapi_resource ⇒ Resource @@ -239,7 +239,7 @@

    -

    Use when direct, low-level access to the scope is required.

    +

    Returns an instance of the associated Resource.

  • @@ -248,7 +248,7 @@

  • - #jsonapi_update ⇒ Util::ValidationResponse + #jsonapi_scope(scope, opts = {}) ⇒ Scope @@ -263,8 +263,7 @@

    -

    Update the resource model and process all nested relationships via the -serialized parameters.

    +

    Use when direct, low-level access to the scope is required.

  • @@ -273,7 +272,7 @@

  • - #query ⇒ Query + #jsonapi_update ⇒ Util::ValidationResponse @@ -288,7 +287,8 @@

    -

    Instantiates the relevant Query object.

    +

    Update the resource model and process all nested relationships via the +serialized parameters.

  • @@ -297,7 +297,7 @@

  • - #query_hash ⇒ Hash + #query ⇒ Query @@ -312,7 +312,7 @@

    -

    The normalized query hash for only the current resource.

    +

    Instantiates the relevant Query object.

  • @@ -321,7 +321,7 @@

  • - #render_jsonapi(scope, opts = {}) ⇒ Object + #query_hash ⇒ Hash @@ -336,7 +336,7 @@

    -

    Similar to render :json or render :jsonapi.

    +

    The normalized query hash for only the current resource.

  • @@ -345,7 +345,7 @@

  • - #resource ⇒ Resource + #render_jsonapi(scope, opts = {}) ⇒ Object @@ -360,7 +360,7 @@

    -

    Returns an instance of the associated Resource.

    +

    Similar to render :json or render :jsonapi.

  • @@ -584,13 +584,13 @@

     
     
    +238
    +239
     240
    -241
    -242
    -243
    +241

    -
    # File 'lib/jsonapi_compliable/base.rb', line 240
    +      
    # File 'lib/jsonapi_compliable/base.rb', line 238
     
     def default_jsonapi_render_options
       {}.tap do |options|
    @@ -645,12 +645,12 @@ 

     
     
    -121
    -122
    -123
    +119 +120 +121

    -
    # File 'lib/jsonapi_compliable/base.rb', line 121
    +      
    # File 'lib/jsonapi_compliable/base.rb', line 119
     
     def deserialized_params
       @deserialized_params ||= JsonapiCompliable::Deserializer.new(params, request.env)
    @@ -725,7 +725,7 @@ 

  • Resource.model
  • -
  • #resource
  • +
  • #resource
  • #deserialized_params
  • @@ -737,21 +737,21 @@

     
     
    +147
    +148
     149
     150
     151
     152
     153
    -154
    -155
    -156
    +154

    -
    # File 'lib/jsonapi_compliable/base.rb', line 149
    +      
    # File 'lib/jsonapi_compliable/base.rb', line 147
     
     def jsonapi_create
       _persist do
    -    resource.persist_with_relationships \
    +    jsonapi_resource.persist_with_relationships \
           deserialized_params.meta,
           deserialized_params.attributes,
           deserialized_params.relationships
    @@ -760,6 +760,72 @@ 

    + + +
    +

    + + #jsonapi_resourceResource + + + + + +

    +
    + +

    Returns an instance of the associated Resource

    + +

    In other words, if you configured your controller as:

    + +
    jsonapi resource: MyResource
    +
    + +

    This returns MyResource.new

    + + +
    +
    +
    + +

    Returns:

    +
      + +
    • + + + (Resource) + + + + — +
      +

      the configured Resource for this controller

      +
      + +
    • + +
    + +
    + + + + +
    +
    +
    +
    +66
    +67
    +68
    +
    +
    # File 'lib/jsonapi_compliable/base.rb', line 66
    +
    +def jsonapi_resource
    +  @jsonapi_resource ||= self.class._jsonapi_compliable.new
    +end
    +
    @@ -839,15 +905,15 @@

     
     
    -115
    -116
    -117
    +113 +114 +115

    -
    # File 'lib/jsonapi_compliable/base.rb', line 115
    +      
    # File 'lib/jsonapi_compliable/base.rb', line 113
     
     def jsonapi_scope(scope, opts = {})
    -  resource.build_scope(scope, query, opts)
    +  jsonapi_resource.build_scope(scope, query, opts)
     end
    @@ -927,21 +993,21 @@

     
     
    +178
    +179
     180
     181
     182
     183
     184
    -185
    -186
    -187
    +185

    -
    # File 'lib/jsonapi_compliable/base.rb', line 180
    +      
    # File 'lib/jsonapi_compliable/base.rb', line 178
     
     def jsonapi_update
       _persist do
    -    resource.persist_with_relationships \
    +    jsonapi_resource.persist_with_relationships \
           deserialized_params.meta,
           deserialized_params.attributes,
           deserialized_params.relationships
    @@ -1011,7 +1077,7 @@ 

    # File 'lib/jsonapi_compliable/base.rb', line 74
     
     def query
    -  @query ||= Query.new(resource, params)
    +  @query ||= Query.new(jsonapi_resource, params)
     end
    @@ -1078,7 +1144,7 @@

    # File 'lib/jsonapi_compliable/base.rb', line 80
     
     def query_hash
    -  @query_hash ||= query.to_hash[resource.type]
    +  @query_hash ||= query.to_hash[jsonapi_resource.type]
     end
    @@ -1217,17 +1283,17 @@

     
     
    +218
    +219
     220
     221
     222
     223
     224
    -225
    -226
    -227
    +225

    -
    # File 'lib/jsonapi_compliable/base.rb', line 220
    +      
    # File 'lib/jsonapi_compliable/base.rb', line 218
     
     def render_jsonapi(scope, opts = {})
       scope = jsonapi_scope(scope) unless opts[:scope] == false || scope.is_a?(JsonapiCompliable::Scope)
    @@ -1240,72 +1306,6 @@ 

    - - -
    -

    - - #resourceResource - - - - - -

    -
    - -

    Returns an instance of the associated Resource

    - -

    In other words, if you configured your controller as:

    - -
    jsonapi resource: MyResource
    -
    - -

    This returns MyResource.new

    - - -
    -
    -
    - -

    Returns:

    -
      - -
    • - - - (Resource) - - - - — -
      -

      the configured Resource for this controller

      -
      - -
    • - -
    - -
    - - - - -
    -
    -
    -
    -66
    -67
    -68
    -
    -
    # File 'lib/jsonapi_compliable/base.rb', line 66
    -
    -def resource
    -  @resource ||= self.class._jsonapi_compliable.new
    -end
    -
    @@ -1361,18 +1361,14 @@

    91 92 93 -94 -95 -96

    +94
    # File 'lib/jsonapi_compliable/base.rb', line 90
     
     def wrap_context
    -  if self.class._jsonapi_compliable
    -    resource.with_context(self, action_name.to_sym) do
    -      yield
    -    end
    +  jsonapi_resource.with_context(self, action_name.to_sym) do
    +    yield
       end
     end
    @@ -1385,7 +1381,7 @@

    diff --git a/docs/JsonapiCompliable/Deserializer.html b/docs/JsonapiCompliable/Deserializer.html index 9dd1089..6fb7e04 100644 --- a/docs/JsonapiCompliable/Deserializer.html +++ b/docs/JsonapiCompliable/Deserializer.html @@ -193,6 +193,30 @@

    The raw :attributes hash + id.

    + + + +
  • + + + #attributes=(attrs) ⇒ Object + + + + + + + + + + + + + +
    +

    Override the attributes # @see #attributes.

    +
    +
  • @@ -490,12 +514,53 @@

    def attributes @attributes ||= raw_attributes.tap do |hash| - hash.merge!(id: id) if id + hash[:id] = id if id end end

    + + +
    +

    + + #attributes=(attrs) ⇒ Object + + + + + +

    +
    + +

    Override the attributes # @see #attributes

    + + +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +74
    +75
    +76
    +
    +
    # File 'lib/jsonapi_compliable/deserializer.rb', line 74
    +
    +def attributes=(attrs)
    +  @attributes = attrs
    +end
    +
    @@ -667,18 +732,18 @@

     
     
    -101
    -102
    -103
    -104
    -105
    -106
     107
     108
    -109
    +109 +110 +111 +112 +113 +114 +115

    -
    # File 'lib/jsonapi_compliable/deserializer.rb', line 101
    +      
    # File 'lib/jsonapi_compliable/deserializer.rb', line 107
     
     def include_directive(memo = {}, relationship_node = nil)
       relationship_node ||= relationships
    @@ -738,16 +803,16 @@ 

     
     
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    +85 +86 +87 +88 +89 +90 +91

    -
    # File 'lib/jsonapi_compliable/deserializer.rb', line 79
    +      
    # File 'lib/jsonapi_compliable/deserializer.rb', line 85
     
     def meta
       {
    @@ -805,12 +870,12 @@ 

     
     
    -88
    -89
    -90
    +94 +95 +96

    -
    # File 'lib/jsonapi_compliable/deserializer.rb', line 88
    +      
    # File 'lib/jsonapi_compliable/deserializer.rb', line 94
     
     def relationships
       @relationships ||= process_relationships(raw_relationships)
    @@ -825,7 +890,7 @@ 

    diff --git a/docs/JsonapiCompliable/Errors.html b/docs/JsonapiCompliable/Errors.html index dfbe82c..af56e3c 100644 --- a/docs/JsonapiCompliable/Errors.html +++ b/docs/JsonapiCompliable/Errors.html @@ -105,7 +105,7 @@

    Defined Under Namespace

    diff --git a/docs/JsonapiCompliable/Errors/BadFilter.html b/docs/JsonapiCompliable/Errors/BadFilter.html index a6934b0..69ba063 100644 --- a/docs/JsonapiCompliable/Errors/BadFilter.html +++ b/docs/JsonapiCompliable/Errors/BadFilter.html @@ -114,7 +114,7 @@ diff --git a/docs/JsonapiCompliable/Errors/StatNotFound.html b/docs/JsonapiCompliable/Errors/StatNotFound.html index 3ea2377..d4e051c 100644 --- a/docs/JsonapiCompliable/Errors/StatNotFound.html +++ b/docs/JsonapiCompliable/Errors/StatNotFound.html @@ -256,7 +256,7 @@

    diff --git a/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html b/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html index 4c6621e..88788f7 100644 --- a/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html +++ b/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html @@ -254,7 +254,7 @@

    diff --git a/docs/JsonapiCompliable/Errors/ValidationError.html b/docs/JsonapiCompliable/Errors/ValidationError.html index 5750b15..1f54cbe 100644 --- a/docs/JsonapiCompliable/Errors/ValidationError.html +++ b/docs/JsonapiCompliable/Errors/ValidationError.html @@ -114,7 +114,7 @@ diff --git a/docs/JsonapiCompliable/Extensions.html b/docs/JsonapiCompliable/Extensions.html index 1ce1f28..4742b5b 100644 --- a/docs/JsonapiCompliable/Extensions.html +++ b/docs/JsonapiCompliable/Extensions.html @@ -107,7 +107,7 @@

    Defined Under Namespace

    diff --git a/docs/JsonapiCompliable/Extensions/BooleanAttribute.html b/docs/JsonapiCompliable/Extensions/BooleanAttribute.html index 5ecca97..9afefbf 100644 --- a/docs/JsonapiCompliable/Extensions/BooleanAttribute.html +++ b/docs/JsonapiCompliable/Extensions/BooleanAttribute.html @@ -202,7 +202,7 @@

    diff --git a/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html b/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html index 5c27499..39ea1bc 100644 --- a/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html +++ b/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html @@ -219,7 +219,7 @@

    diff --git a/docs/JsonapiCompliable/Extensions/ExtraAttribute.html b/docs/JsonapiCompliable/Extensions/ExtraAttribute.html index 1961977..87c0420 100644 --- a/docs/JsonapiCompliable/Extensions/ExtraAttribute.html +++ b/docs/JsonapiCompliable/Extensions/ExtraAttribute.html @@ -232,7 +232,7 @@

    diff --git a/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html b/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html index 5753252..9d8f7c4 100644 --- a/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html +++ b/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html @@ -227,7 +227,7 @@

    diff --git a/docs/JsonapiCompliable/Query.html b/docs/JsonapiCompliable/Query.html index 5d45d14..5cf8020 100644 --- a/docs/JsonapiCompliable/Query.html +++ b/docs/JsonapiCompliable/Query.html @@ -392,7 +392,8 @@

    24 25 26 -27

    +27 +28
    # File 'lib/jsonapi_compliable/query.rb', line 24
    @@ -400,6 +401,7 @@ 

    def initialize(resource, params) @resource = resource @params = params + @params = @params.permit! if @params.respond_to?(:permit!) end

    @@ -649,12 +651,12 @@

     
     
    -71
     72
    -73
    +73 +74

    -
    # File 'lib/jsonapi_compliable/query.rb', line 71
    +      
    # File 'lib/jsonapi_compliable/query.rb', line 72
     
     def association_names
       @association_names ||= Util::Hash.keys(include_hash)
    @@ -710,12 +712,12 @@ 

     
     
    -32
     33
    -34
    +34 +35

    -
    # File 'lib/jsonapi_compliable/query.rb', line 32
    +      
    # File 'lib/jsonapi_compliable/query.rb', line 33
     
     def include_directive
       @include_directive ||= JSONAPI::IncludeDirective.new(params[:include])
    @@ -787,7 +789,6 @@ 

     
     
    -49
     50
     51
     52
    @@ -796,10 +797,11 @@ 

    55 56 57 -58

    +58 +59

    -
    # File 'lib/jsonapi_compliable/query.rb', line 49
    +      
    # File 'lib/jsonapi_compliable/query.rb', line 50
     
     def include_hash
       @include_hash ||= begin
    @@ -946,7 +948,6 @@ 

     
     
    -120
     121
     122
     123
    @@ -968,10 +969,11 @@ 

    139 140 141 -142

    +142 +143

    -
    # File 'lib/jsonapi_compliable/query.rb', line 120
    +      
    # File 'lib/jsonapi_compliable/query.rb', line 121
     
     def to_hash
       hash = { resource.type => self.class.default_hash }
    @@ -1065,14 +1067,14 @@ 

     
     
    -159
     160
     161
     162
    -163
    +163 +164

    -
    # File 'lib/jsonapi_compliable/query.rb', line 159
    +      
    # File 'lib/jsonapi_compliable/query.rb', line 160
     
     def zero_results?
       !@params[:page].nil? &&
    @@ -1089,7 +1091,7 @@ 

    diff --git a/docs/JsonapiCompliable/Rails.html b/docs/JsonapiCompliable/Rails.html index 8aa0d56..51633ba 100644 --- a/docs/JsonapiCompliable/Rails.html +++ b/docs/JsonapiCompliable/Rails.html @@ -201,7 +201,7 @@

    diff --git a/docs/JsonapiCompliable/Resource.html b/docs/JsonapiCompliable/Resource.html index d8ee9c5..5e0ca73 100644 --- a/docs/JsonapiCompliable/Resource.html +++ b/docs/JsonapiCompliable/Resource.html @@ -252,7 +252,7 @@

    Instance Attribute Summary collaps
  • - #context ⇒ Hash + #context ⇒ Object @@ -272,7 +272,8 @@

    Instance Attribute Summary collaps
    -

    The current context set by #with_context in the form of.

    +

    The current context *object* set by +#with_context.

  • @@ -902,6 +903,31 @@

    Build a scope using this Resource configuration.

    + + + +
  • + + + #context_namespace ⇒ Symbol + + + + + + + + + + + + + +
    +

    The current context *namespace* set by +#with_context.

    +
    +
  • @@ -1462,12 +1488,12 @@

     
     
    -415
    -416
    -417
    +413 +414 +415

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 415
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 413
     
     def config
       @config
    @@ -1487,7 +1513,7 @@ 

    Instance Attribute Details

    - #contextHash (readonly) + #contextObject (readonly) @@ -1496,10 +1522,12 @@

    -

    The current context set by #with_context in the form of

    +

    The current context *object* set by +#with_context. If you are using Rails, this is a controller +instance.

    -
    { object: context_obj, namespace: :index }
    -
    +

    This method is equivalent to +JsonapiCompliable.context+

    @@ -1512,13 +1540,13 @@

  • - (Hash) + - — +
    -

    the context hash

    +

    the context object

  • @@ -1538,12 +1566,12 @@

     
     
    -92
    -93
    -94
    +459 +460 +461

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 92
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 459
     
     def context
       @context
    @@ -1747,18 +1775,18 @@ 

     
     
    +199
    +200
     201
     202
     203
     204
     205
     206
    -207
    -208
    -209
    +207

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 201
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 199
     
     def self.allow_filter(name, *args, &blk)
       opts = args.extract_options!
    @@ -1805,10 +1833,10 @@ 

     
     
    -102
    +100

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 102
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 100
     
     def_delegator :sideloading, :allow_sideload
    @@ -1939,14 +1967,14 @@

     
     
    +238
    +239
     240
     241
    -242
    -243
    -244
    +242

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 240
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 238
     
     def self.allow_stat(symbol_or_hash, &blk)
       dsl = Stats::DSL.new(config[:adapter], symbol_or_hash)
    @@ -1989,10 +2017,10 @@ 

     
     
    -111
    +109

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 111
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 109
     
     def_delegator :sideloading, :belongs_to
    @@ -2104,14 +2132,14 @@

     
     
    +266
    +267
     268
     269
    -270
    -271
    -272
    +270

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 268
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 266
     
     def self.default_filter(name, &blk)
       config[:default_filters][name.to_sym] = {
    @@ -2169,12 +2197,12 @@ 

     
     
    -395
    -396
    -397
    +393 +394 +395

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 395
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 393
     
     def self.default_page_number(val)
       config[:default_page_number] = val
    @@ -2239,12 +2267,12 @@ 

     
     
    -406
    -407
    -408
    +404 +405 +406

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 406
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 404
     
     def self.default_page_size(val)
       config[:default_page_size] = val
    @@ -2315,12 +2343,12 @@ 

     
     
    -367
    -368
    -369
    +365 +366 +367

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 367
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 365
     
     def self.default_sort(val)
       config[:default_sort] = val
    @@ -2453,12 +2481,12 @@ 

     
     
    -343
    -344
    -345
    +341 +342 +343

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 343
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 341
     
     def self.extra_field(name, &blk)
       config[:extra_fields][name] = blk
    @@ -2499,10 +2527,10 @@ 

     
     
    -114
    +112

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 114
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 112
     
     def_delegator :sideloading, :has_and_belongs_to_many
    @@ -2541,10 +2569,10 @@

     
     
    -105
    +103

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 105
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 103
     
     def_delegator :sideloading, :has_many
    @@ -2583,10 +2611,10 @@

     
     
    -108
    +106

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 108
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 106
     
     def_delegator :sideloading, :has_one
    @@ -2609,12 +2637,12 @@

     
     
    -128
    -129
    -130
    +126 +127 +128

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 128
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 126
     
     def self.inherited(klass)
       klass.config = Util::Hash.deep_dup(self.config)
    @@ -2685,12 +2713,12 @@ 

     
     
    -287
    -288
    -289
    +285 +286 +287

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 287
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 285
     
     def self.model(klass)
       config[:model] = klass
    @@ -2793,12 +2821,12 @@ 

     
     
    -321
    -322
    -323
    +319 +320 +321

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 321
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 319
     
     def self.paginate(&blk)
       config[:pagination] = blk
    @@ -2839,10 +2867,10 @@ 

     
     
    -117
    +115

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 117
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 115
     
     def_delegator :sideloading, :polymorphic_belongs_to
    @@ -2881,10 +2909,10 @@

     
     
    -120
    +118

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 120
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 118
     
     def_delegator :sideloading, :polymorphic_has_many
    @@ -2971,12 +2999,12 @@

     
     
    -163
    -164
    -165
    +161 +162 +163

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 163
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 161
     
     def self.sideload_whitelist(whitelist)
       config[:sideload_whitelist] = JSONAPI::IncludeDirective.new(whitelist).to_hash
    @@ -3014,12 +3042,12 @@ 

     
     
    -133
    -134
    -135
    +131 +132 +133

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 133
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 131
     
     def self.sideloading
       @sideloading ||= Sideload.new(:base, resource: self)
    @@ -3126,12 +3154,12 @@ 

     
     
    -306
    -307
    -308
    +304 +305 +306

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 306
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 304
     
     def self.sort(&blk)
       config[:sorting] = blk
    @@ -3209,12 +3237,12 @@ 

     
     
    -389
    -390
    -391
    +387 +388 +389

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 389
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 387
     
     def self.type(value = nil)
       config[:type] = value
    @@ -3283,12 +3311,12 @@ 

     
     
    -354
    -355
    -356
    +352 +353 +354

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 354
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 352
     
     def self.use_adapter(klass)
       config[:adapter] = klass.new
    @@ -3339,12 +3367,12 @@ 

     
     
    -709
    -710
    -711
    +715 +716 +717

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 709
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 715
     
     def adapter
       self.class.config[:adapter]
    @@ -3451,24 +3479,24 @@ 

     
     
    -592
    -593
    -594
    -595
    -596
    -597
     598
     599
     600
    -601
    +601 +602 +603 +604 +605 +606 +607

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 592
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 598
     
     def allowed_sideloads(namespace = nil)
       return {} unless sideloading
     
    -  namespace ||= context[:namespace]
    +  namespace ||= context_namespace
       sideloads = sideloading.to_hash[:base]
       if !sideload_whitelist.empty? && namespace
         sideloads = Util::IncludeParams.scrub(sideloads, sideload_whitelist[namespace])
    @@ -3539,18 +3567,18 @@ 

     
     
    -557
    -558
    -559
    -560
    -561
    -562
     563
     564
    -565
    +565 +566 +567 +568 +569 +570 +571

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 557
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 563
     
     def association_names
       @association_names ||= begin
    @@ -3675,12 +3703,12 @@ 

     
     
    -478
    -479
    -480
    +484 +485 +486

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 478
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 484
     
     def build_scope(base, query, opts = {})
       Scope.new(base, self, query, opts)
    @@ -3688,6 +3716,77 @@ 

    + + +
    +

    + + #context_namespaceSymbol + + + + + +

    +
    + +

    The current context *namespace* set by +#with_context. If you are using Rails, this is the controller +method name (e.g. :index)

    + +

    This method is equivalent to +JsonapiCompliable.context+

    + + +
    +
    +
    + +

    Returns:

    +
      + +
    • + + + (Symbol) + + + + — +
      +

      the context namespace

      +
      + +
    • + +
    + +

    See Also:

    + + +
    + + + + +
    +
    +
    +
    +470
    +471
    +472
    +
    +
    # File 'lib/jsonapi_compliable/resource.rb', line 470
    +
    +def context_namespace
    +  JsonapiCompliable.context[:namespace]
    +end
    +
    @@ -3781,12 +3880,12 @@

     
     
    -497
    -498
    -499
    +503 +504 +505

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 497
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 503
     
     def create(create_params)
       adapter.create(model, create_params)
    @@ -3831,12 +3930,12 @@ 

     
     
    -697
    -698
    -699
    +703 +704 +705

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 697
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 703
     
     def default_filters
       self.class.config[:default_filters]
    @@ -3881,12 +3980,12 @@ 

     
     
    -642
    -643
    -644
    +648 +649 +650

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 642
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 648
     
     def default_page_number
       self.class.config[:default_page_number] || 1
    @@ -3931,12 +4030,12 @@ 

     
     
    -648
    -649
    -650
    +654 +655 +656

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 648
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 654
     
     def default_page_size
       self.class.config[:default_page_size] || 20
    @@ -3981,12 +4080,12 @@ 

     
     
    -636
    -637
    -638
    +642 +643 +644

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 636
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 642
     
     def default_sort
       self.class.config[:default_sort] || [{ id: :asc }]
    @@ -4088,12 +4187,12 @@ 

     
     
    -536
    -537
    -538
    +542 +543 +544

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 536
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 542
     
     def destroy(id)
       adapter.destroy(model, id)
    @@ -4138,12 +4237,12 @@ 

     
     
    -685
    -686
    -687
    +691 +692 +693

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 685
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 691
     
     def extra_fields
       self.class.config[:extra_fields]
    @@ -4188,12 +4287,12 @@ 

     
     
    -661
    -662
    -663
    +667 +668 +669

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 661
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 667
     
     def filters
       self.class.config[:filters]
    @@ -4238,12 +4337,12 @@ 

     
     
    -703
    -704
    -705
    +709 +710 +711

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 703
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 709
     
     def model
       self.class.config[:model]
    @@ -4288,12 +4387,12 @@ 

     
     
    -679
    -680
    -681
    +685 +686 +687

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 679
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 685
     
     def pagination
       self.class.config[:pagination]
    @@ -4331,14 +4430,14 @@ 

     
     
    -541
    -542
    -543
    -544
    -545
    +547 +548 +549 +550 +551

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 541
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 547
     
     def persist_with_relationships(meta, attributes, relationships)
       persistence = JsonapiCompliable::Util::Persistence \
    @@ -4458,12 +4557,12 @@ 

     
     
    -745
    -746
    -747
    +751 +752 +753

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 745
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 751
     
     def resolve(scope)
       adapter.resolve(scope)
    @@ -4504,10 +4603,10 @@ 

     
     
    -125
    +123

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 125
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 123
     
     def_delegator :sideloading, :sideload
    @@ -4550,12 +4649,12 @@

     
     
    -691
    -692
    -693
    +697 +698 +699

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 691
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 697
     
     def sideload_whitelist
       self.class.config[:sideload_whitelist]
    @@ -4595,12 +4694,12 @@ 

     
     
    -630
    -631
    -632
    +636 +637 +638

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 630
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 636
     
     def sideloading
       self.class.sideloading
    @@ -4645,12 +4744,12 @@ 

     
     
    -667
    -668
    -669
    +673 +674 +675

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 667
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 673
     
     def sorting
       self.class.config[:sorting]
    @@ -4782,14 +4881,14 @@ 

     
     
    -622
    -623
    -624
    -625
    -626
    +628 +629 +630 +631 +632

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 622
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 628
     
     def stat(attribute, calculation)
       stats_dsl = stats[attribute] || stats[attribute.to_sym]
    @@ -4836,12 +4935,12 @@ 

     
     
    -673
    -674
    -675
    +679 +680 +681

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 673
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 679
     
     def stats
       self.class.config[:stats]
    @@ -4919,19 +5018,19 @@ 

     
     
    -765
    -766
    -767
    -768
    -769
    -770
     771
     772
     773
    -774
    +774 +775 +776 +777 +778 +779 +780

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 765
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 771
     
     def transaction
       response = nil
    @@ -4985,12 +5084,12 @@ 

     
     
    -655
    -656
    -657
    +661 +662 +663

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 655
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 661
     
     def type
       self.class.config[:type] || :undefined_jsonapi_type
    @@ -5091,12 +5190,12 @@ 

     
     
    -516
    -517
    -518
    +522 +523 +524

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 516
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 522
     
     def update(update_params)
       adapter.update(model, update_params)
    @@ -5199,26 +5298,18 @@ 

     
     
    +446
    +447
     448
     449
    -450
    -451
    -452
    -453
    -454
    -455
    -456
    +450

    -
    # File 'lib/jsonapi_compliable/resource.rb', line 448
    +      
    # File 'lib/jsonapi_compliable/resource.rb', line 446
     
     def with_context(object, namespace = nil)
    -  begin
    -    prior = context
    -    @context = { object: object, namespace: namespace }
    +  JsonapiCompliable.with_context(object, namespace) do
         yield
    -  ensure
    -    @context = prior
       end
     end
    @@ -5231,7 +5322,7 @@

    diff --git a/docs/JsonapiCompliable/Scope.html b/docs/JsonapiCompliable/Scope.html index 3011296..e5928f3 100644 --- a/docs/JsonapiCompliable/Scope.html +++ b/docs/JsonapiCompliable/Scope.html @@ -693,7 +693,7 @@

    diff --git a/docs/JsonapiCompliable/Scoping.html b/docs/JsonapiCompliable/Scoping.html index 0f0165e..f4b774b 100644 --- a/docs/JsonapiCompliable/Scoping.html +++ b/docs/JsonapiCompliable/Scoping.html @@ -107,7 +107,7 @@

    Defined Under Namespace

    diff --git a/docs/JsonapiCompliable/Scoping/Base.html b/docs/JsonapiCompliable/Scoping/Base.html index e253760..dbd0c4e 100644 --- a/docs/JsonapiCompliable/Scoping/Base.html +++ b/docs/JsonapiCompliable/Scoping/Base.html @@ -833,7 +833,7 @@

    diff --git a/docs/JsonapiCompliable/Scoping/DefaultFilter.html b/docs/JsonapiCompliable/Scoping/DefaultFilter.html index 5811488..770bf32 100644 --- a/docs/JsonapiCompliable/Scoping/DefaultFilter.html +++ b/docs/JsonapiCompliable/Scoping/DefaultFilter.html @@ -308,7 +308,7 @@

    diff --git a/docs/JsonapiCompliable/Scoping/ExtraFields.html b/docs/JsonapiCompliable/Scoping/ExtraFields.html index 4f08a17..07bbdf0 100644 --- a/docs/JsonapiCompliable/Scoping/ExtraFields.html +++ b/docs/JsonapiCompliable/Scoping/ExtraFields.html @@ -291,7 +291,7 @@

    diff --git a/docs/JsonapiCompliable/Scoping/Filter.html b/docs/JsonapiCompliable/Scoping/Filter.html index 64db7b1..bc3ec47 100644 --- a/docs/JsonapiCompliable/Scoping/Filter.html +++ b/docs/JsonapiCompliable/Scoping/Filter.html @@ -303,7 +303,7 @@

    diff --git a/docs/JsonapiCompliable/Scoping/Filterable.html b/docs/JsonapiCompliable/Scoping/Filterable.html index 0b7f1f4..8641ebe 100644 --- a/docs/JsonapiCompliable/Scoping/Filterable.html +++ b/docs/JsonapiCompliable/Scoping/Filterable.html @@ -340,7 +340,7 @@

    resource.filters.find { |_name, opts| opts[:aliases].include?(name.to_sym) } raise JsonapiCompliable::Errors::BadFilter unless filter_name if guard = filter_value[:if] - raise JsonapiCompliable::Errors::BadFilter if resource.context[:object].send(guard) == false + raise JsonapiCompliable::Errors::BadFilter if resource.context.send(guard) == false end { filter_name => filter_value } end

    @@ -354,7 +354,7 @@

    diff --git a/docs/JsonapiCompliable/Scoping/Paginate.html b/docs/JsonapiCompliable/Scoping/Paginate.html index ec21931..7efc1e7 100644 --- a/docs/JsonapiCompliable/Scoping/Paginate.html +++ b/docs/JsonapiCompliable/Scoping/Paginate.html @@ -603,7 +603,7 @@

    diff --git a/docs/JsonapiCompliable/Scoping/Sort.html b/docs/JsonapiCompliable/Scoping/Sort.html index 693c451..06005aa 100644 --- a/docs/JsonapiCompliable/Scoping/Sort.html +++ b/docs/JsonapiCompliable/Scoping/Sort.html @@ -444,7 +444,7 @@

    diff --git a/docs/JsonapiCompliable/SerializableTempId.html b/docs/JsonapiCompliable/SerializableTempId.html index 869203e..76a21de 100644 --- a/docs/JsonapiCompliable/SerializableTempId.html +++ b/docs/JsonapiCompliable/SerializableTempId.html @@ -206,7 +206,7 @@

    diff --git a/docs/JsonapiCompliable/Sideload.html b/docs/JsonapiCompliable/Sideload.html index 84422ea..0e55e2c 100644 --- a/docs/JsonapiCompliable/Sideload.html +++ b/docs/JsonapiCompliable/Sideload.html @@ -168,7 +168,7 @@

    Instance Attribute Summary collaps
  • - #grouper ⇒ Proc + #grouping_field ⇒ Symbol @@ -188,7 +188,7 @@

    Instance Attribute Summary collaps
    -

    The configured 'group_by' proc.

    +

    The configured 'group_by' symbol.

  • @@ -220,6 +220,35 @@

    Instance Attribute Summary collaps

    The name of the sideload.

    + + + +
  • + + + #parent ⇒ Object + + + + + + + + + readonly + + + + + + + + + +
    +

    Returns the value of attribute parent.

    +
    +
  • @@ -515,7 +544,7 @@

  • - #group_by(&grouper) ⇒ Object + #group_by(grouping_field) ⇒ Object @@ -530,7 +559,7 @@

    -

    Define a proc that groups the parent records.

    +

    Define an attribute that groups the parent records.

  • @@ -539,7 +568,7 @@

  • - #initialize(name, type: nil, resource: nil, polymorphic: false, primary_key: :id, foreign_key: nil) ⇒ Sideload + #initialize(name, type: nil, resource: nil, polymorphic: false, primary_key: :id, foreign_key: nil, parent: nil) ⇒ Sideload @@ -584,6 +613,28 @@

    Is this sideload polymorphic?.

    +

  • + + +
  • + + + #polymorphic_child_for_type(type) ⇒ Object + + + + + + + + + + + private + + +
    +
  • @@ -718,7 +769,7 @@

    Constructor Details

    - #initialize(name, type: nil, resource: nil, polymorphic: false, primary_key: :id, foreign_key: nil) ⇒ Sideload + #initialize(name, type: nil, resource: nil, polymorphic: false, primary_key: :id, foreign_key: nil, parent: nil) ⇒ Sideload @@ -751,7 +802,6 @@

     
     
    -31
     32
     33
     34
    @@ -762,17 +812,20 @@ 

    39 40 41 -42

    +42 +43 +44

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 31
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 32
     
    -def initialize(name, type: nil, resource: nil, polymorphic: false, primary_key: :id, foreign_key: nil)
    +def initialize(name, type: nil, resource: nil, polymorphic: false, primary_key: :id, foreign_key: nil, parent: nil)
       @name               = name
       @resource_class     = (resource || Class.new(Resource))
       @sideloads          = {}
       @polymorphic        = !!polymorphic
       @polymorphic_groups = {} if polymorphic?
    +  @parent             = parent
       @primary_key        = primary_key
       @foreign_key        = foreign_key
       @type               = type
    @@ -915,9 +968,9 @@ 

    -

    +

    - #grouperProc (readonly) + #grouping_fieldSymbol (readonly) @@ -926,7 +979,7 @@

    -

    The configured 'group_by' proc

    +

    The configured 'group_by' symbol

    @@ -939,13 +992,13 @@

  • - (Proc) + (Symbol)
    -

    the current value of grouper

    +

    the current value of grouping_field

  • @@ -965,8 +1018,8 @@

    # File 'lib/jsonapi_compliable/sideload.rb', line 13
     
    -def grouper
    -  @grouper
    +def grouping_field
    +  @grouping_field
     end
    @@ -1035,6 +1088,49 @@

    + +
    +

    + + #parentObject (readonly) + + + + + +

    +
    + +

    Returns the value of attribute parent

    + + +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +14
    +15
    +16
    +
    +
    # File 'lib/jsonapi_compliable/sideload.rb', line 14
    +
    +def parent
    +  @parent
    +end
    +
    +
    + +

    @@ -1565,19 +1661,19 @@

     
     
    -264
    -265
    -266
    -267
    -268
    -269
     270
     271
     272
    -273
    +273 +274 +275 +276 +277 +278 +279

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 264
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 270
     
     def allow_sideload(name, opts = {}, &blk)
       sideload = Sideload.new(name, opts)
    @@ -1708,12 +1804,12 @@ 

     
     
    -166
    -167
    -168
    +168 +169 +170

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 166
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 168
     
     def assign(&blk)
       @assign_proc = blk
    @@ -1776,15 +1872,23 @@ 

     
     
    -183
    -184
    -185
    +185 +186 +187 +188 +189 +190 +191

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 183
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 185
     
     def associate(parent, child)
    -  resource_class.config[:adapter].associate(parent, child, name, type)
    +  association_name = @parent ? @parent.name : name
    +  resource_class.config[:adapter].associate parent,
    +    child,
    +    association_name,
    +    type
     end
    @@ -1794,7 +1898,7 @@

    - #group_by(&grouper) ⇒ Object + #group_by(grouping_field) ⇒ Object @@ -1803,14 +1907,14 @@

    -

    Define a proc that groups the parent records. For instance, with an +

    Define an attribute that groups the parent records. For instance, with an ActiveRecord polymorphic belongs_to there will be a parent_id and parent_type. We would want to group on parent_type:

    allow_sideload :organization, polymorphic: true do
       # group parent_type, parent here is 'organization'
    -  group_by ->(office) { office.organization_type }
    +  group_by :organization_type
     end
     
    @@ -1833,15 +1937,15 @@

     
     
    -197
    -198
    -199
    +203 +204 +205

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 197
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 203
     
    -def group_by(&grouper)
    -  @grouper = grouper
    +def group_by(grouping_field)
    +  @grouping_field = grouping_field
     end
    @@ -1868,7 +1972,7 @@

    be either a Business or Government:

    allow_sideload :organization, :polymorphic: true do
    -  group_by { |record| record.organization_type }
    +  group_by :organization_type
     
       allow_sideload 'Business', resource: BusinessResource do
         # ... code ...
    @@ -1883,7 +1987,7 @@ 

    ActiveRecord:

    polymorphic_belongs_to :organization,
    -  group_by: ->(office) { office.organization_type },
    +  group_by: :organization_type,
       groups: {
         'Business' => {
           scope: -> { Business.all },
    @@ -1935,12 +2039,12 @@ 

     
     
    -89
    -90
    -91
    +91 +92 +93

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 89
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 91
     
     def polymorphic?
       @polymorphic == true
    @@ -1948,6 +2052,53 @@ 

    + + +
    +

    + + #polymorphic_child_for_type(type) ⇒ Object + + + + + +

    +
    +

    + This method is part of a private API. + You should avoid using this method if possible, as it may be removed or be changed in the future. +

    + + +
    +
    +
    + + +
    + + + + +
    +
    +
    +
    +333
    +334
    +335
    +336
    +337
    +
    +
    # File 'lib/jsonapi_compliable/sideload.rb', line 333
    +
    +def polymorphic_child_for_type(type)
    +  polymorphic_groups.values.find do |v|
    +    v.resource_class.config[:type] == type
    +  end
    +end
    +
    @@ -2054,18 +2205,18 @@

     
     
    -216
    -217
    -218
    -219
    -220
    -221
     222
     223
    -224
    +224 +225 +226 +227 +228 +229 +230

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 216
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 222
     
     def resolve(parents, query, namespace = nil)
       namespace ||= name
    @@ -2132,12 +2283,12 @@ 

     
     
    -46
    -47
    -48
    +48 +49 +50

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 46
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 48
     
     def resource
       @resource ||= resource_class.new
    @@ -2252,12 +2403,12 @@ 

     
     
    -129
    -130
    -131
    +131 +132 +133

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 129
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 131
     
     def scope(&blk)
       @scope_proc = blk
    @@ -2338,12 +2489,12 @@ 

     
     
    -279
    -280
    -281
    +285 +286 +287

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 279
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 285
     
     def sideload(name)
       @sideloads[name]
    @@ -2422,12 +2573,6 @@ 

     
     
    -306
    -307
    -308
    -309
    -310
    -311
     312
     313
     314
    @@ -2440,10 +2585,16 @@ 

    321 322 323 -324

    +324 +325 +326 +327 +328 +329 +330

    -
    # File 'lib/jsonapi_compliable/sideload.rb', line 306
    +      
    # File 'lib/jsonapi_compliable/sideload.rb', line 312
     
     def to_hash(processed = [])
       return { name => {} } if processed.include?(self)
    @@ -2474,7 +2625,7 @@ 

    diff --git a/docs/JsonapiCompliable/Stats.html b/docs/JsonapiCompliable/Stats.html index 42a9746..a9525ca 100644 --- a/docs/JsonapiCompliable/Stats.html +++ b/docs/JsonapiCompliable/Stats.html @@ -107,7 +107,7 @@

    Defined Under Namespace

    diff --git a/docs/JsonapiCompliable/Stats/DSL.html b/docs/JsonapiCompliable/Stats/DSL.html index 7f8ab95..a522544 100644 --- a/docs/JsonapiCompliable/Stats/DSL.html +++ b/docs/JsonapiCompliable/Stats/DSL.html @@ -989,7 +989,7 @@

    diff --git a/docs/JsonapiCompliable/Stats/Payload.html b/docs/JsonapiCompliable/Stats/Payload.html index f446dcf..29231ce 100644 --- a/docs/JsonapiCompliable/Stats/Payload.html +++ b/docs/JsonapiCompliable/Stats/Payload.html @@ -381,7 +381,7 @@

    diff --git a/docs/JsonapiCompliable/Util.html b/docs/JsonapiCompliable/Util.html index b91374d..2a264be 100644 --- a/docs/JsonapiCompliable/Util.html +++ b/docs/JsonapiCompliable/Util.html @@ -107,7 +107,7 @@

    Defined Under Namespace

    diff --git a/docs/JsonapiCompliable/Util/FieldParams.html b/docs/JsonapiCompliable/Util/FieldParams.html index 8d02905..4b40320 100644 --- a/docs/JsonapiCompliable/Util/FieldParams.html +++ b/docs/JsonapiCompliable/Util/FieldParams.html @@ -218,7 +218,7 @@

    diff --git a/docs/JsonapiCompliable/Util/Hash.html b/docs/JsonapiCompliable/Util/Hash.html index 48509c4..feabdaf 100644 --- a/docs/JsonapiCompliable/Util/Hash.html +++ b/docs/JsonapiCompliable/Util/Hash.html @@ -461,7 +461,7 @@

    diff --git a/docs/JsonapiCompliable/Util/IncludeParams.html b/docs/JsonapiCompliable/Util/IncludeParams.html index 923b9bf..8da4d80 100644 --- a/docs/JsonapiCompliable/Util/IncludeParams.html +++ b/docs/JsonapiCompliable/Util/IncludeParams.html @@ -289,7 +289,7 @@

    diff --git a/docs/JsonapiCompliable/Util/Persistence.html b/docs/JsonapiCompliable/Util/Persistence.html index 030e8a2..8533ba1 100644 --- a/docs/JsonapiCompliable/Util/Persistence.html +++ b/docs/JsonapiCompliable/Util/Persistence.html @@ -425,7 +425,7 @@

    diff --git a/docs/JsonapiCompliable/Util/RelationshipPayload.html b/docs/JsonapiCompliable/Util/RelationshipPayload.html index 93df412..8a6e4b6 100644 --- a/docs/JsonapiCompliable/Util/RelationshipPayload.html +++ b/docs/JsonapiCompliable/Util/RelationshipPayload.html @@ -553,7 +553,7 @@

    diff --git a/docs/JsonapiCompliable/Util/RenderOptions.html b/docs/JsonapiCompliable/Util/RenderOptions.html index 67828fe..2f5930c 100644 --- a/docs/JsonapiCompliable/Util/RenderOptions.html +++ b/docs/JsonapiCompliable/Util/RenderOptions.html @@ -240,7 +240,7 @@

    diff --git a/docs/JsonapiCompliable/Util/ValidationResponse.html b/docs/JsonapiCompliable/Util/ValidationResponse.html index 9d65e4a..f67a263 100644 --- a/docs/JsonapiCompliable/Util/ValidationResponse.html +++ b/docs/JsonapiCompliable/Util/ValidationResponse.html @@ -522,7 +522,7 @@

    diff --git a/docs/_index.html b/docs/_index.html index 08d11eb..e1830d7 100644 --- a/docs/_index.html +++ b/docs/_index.html @@ -301,6 +301,11 @@

    Namespace Listing A-Z

  • J
  • @@ -517,7 +529,7 @@

    Namespace Listing A-Z

    diff --git a/docs/class_list.html b/docs/class_list.html index 6eb46e7..ab75cea 100644 --- a/docs/class_list.html +++ b/docs/class_list.html @@ -43,7 +43,7 @@

    Class List

    diff --git a/docs/file.README.html b/docs/file.README.html index 3180c0b..3f79e3b 100644 --- a/docs/file.README.html +++ b/docs/file.README.html @@ -61,7 +61,9 @@

    Build Status

    -

    official documentation

    +

    JSONAPI Suite Website

    + +

    Documentation

    Supported Rails versions: >= 4.1

    @@ -89,7 +91,7 @@

    Generating the Documentation

    diff --git a/docs/index.html b/docs/index.html index 18f16e5..85b9958 100644 --- a/docs/index.html +++ b/docs/index.html @@ -61,7 +61,9 @@

    Build Status

    -

    official documentation

    +

    JSONAPI Suite Website

    + +

    Documentation

    Supported Rails versions: >= 4.1

    @@ -89,7 +91,7 @@

    Generating the Documentation

    diff --git a/docs/method_list.html b/docs/method_list.html index 4d4400a..04bb186 100644 --- a/docs/method_list.html +++ b/docs/method_list.html @@ -94,8 +94,8 @@

    Method List

  • - #apply - JsonapiCompliable::Scoping::Paginate + #apply + JsonapiCompliable::Scoping::Filter
  • @@ -110,40 +110,40 @@

    Method List

  • - #apply - JsonapiCompliable::Scoping::ExtraFields + #apply + JsonapiCompliable::Scoping::DefaultFilter
  • - #apply - JsonapiCompliable::Scoping::DefaultFilter + #apply + JsonapiCompliable::Scoping::Paginate
  • - #apply - JsonapiCompliable::Scoping::Filter + #apply + JsonapiCompliable::Scoping::ExtraFields
  • - #apply? - JsonapiCompliable::Scoping::Base + #apply? + JsonapiCompliable::Scoping::Paginate
  • - #apply? - JsonapiCompliable::Scoping::Paginate + #apply? + JsonapiCompliable::Scoping::Base
  • @@ -182,16 +182,16 @@

    Method List

  • - #apply_standard_scope - JsonapiCompliable::Scoping::Base + #apply_standard_scope + JsonapiCompliable::Scoping::Sort
  • - #apply_standard_scope - JsonapiCompliable::Scoping::Sort + #apply_standard_scope + JsonapiCompliable::Scoping::Base
  • @@ -222,32 +222,32 @@

    Method List

  • - #associate - JsonapiCompliable::Adapters::ActiveRecord + #associate + JsonapiCompliable::Sideload
  • - #associate - JsonapiCompliable::Adapters::Abstract + #associate + JsonapiCompliable::Adapters::ActiveRecord
  • - #associate - JsonapiCompliable::Adapters::Null + #associate + JsonapiCompliable::Adapters::Abstract
  • - #associate - JsonapiCompliable::Sideload + #associate + JsonapiCompliable::Adapters::Null
  • @@ -278,29 +278,37 @@

    Method List

  • - #average - JsonapiCompliable::Adapters::Abstract + #attributes= + JsonapiCompliable::Deserializer
  • - #average - JsonapiCompliable::Adapters::ActiveRecord + #average + JsonapiCompliable::Adapters::Null
  • - #average - JsonapiCompliable::Adapters::Null + #average + JsonapiCompliable::Adapters::Abstract
  • +
    + #average + JsonapiCompliable::Adapters::ActiveRecord +
    +
  • + + +
  • #average! JsonapiCompliable::Stats::DSL @@ -308,7 +316,7 @@

    Method List

  • -
  • +
  • #belongs_to JsonapiCompliable::Adapters::ActiveRecordSideloading @@ -316,7 +324,7 @@

    Method List

  • -
  • +
  • belongs_to JsonapiCompliable::Resource @@ -324,7 +332,7 @@

    Method List

  • -
  • +
  • #boolean_attribute JsonapiCompliable::Extensions::BooleanAttribute::ClassMethods @@ -332,7 +340,7 @@

    Method List

  • -
  • +
  • #build_scope JsonapiCompliable::Resource @@ -340,7 +348,7 @@

    Method List

  • -
  • +
  • #calculation JsonapiCompliable::Stats::DSL @@ -348,7 +356,7 @@

    Method List

  • -
  • +
  • #calculations JsonapiCompliable::Stats::DSL @@ -356,7 +364,7 @@

    Method List

  • -
  • +
  • config JsonapiCompliable::Resource @@ -364,6 +372,14 @@

    Method List

  • +
  • +
    + context + JsonapiCompliable +
    +
  • + +
  • #context @@ -374,44 +390,60 @@

    Method List

  • - #count - JsonapiCompliable::Adapters::ActiveRecord + context= + JsonapiCompliable
  • - #count - JsonapiCompliable::Adapters::Abstract + #context_namespace + JsonapiCompliable::Resource
  • - #count - JsonapiCompliable::Adapters::Null + #copy_resource_file + Jsonapi::ResourceGenerator
  • - #count! - JsonapiCompliable::Stats::DSL + #count + JsonapiCompliable::Adapters::ActiveRecord
  • - #create + #count JsonapiCompliable::Adapters::Abstract
  • +
  • +
    + #count + JsonapiCompliable::Adapters::Null +
    +
  • + + +
  • +
    + #count! + JsonapiCompliable::Stats::DSL +
    +
  • + +
  • #create @@ -421,6 +453,14 @@

    Method List

  • +
    + #create + JsonapiCompliable::Adapters::Abstract +
    +
  • + + +
  • #create JsonapiCompliable::Resource @@ -428,7 +468,7 @@

    Method List

  • -
  • +
  • #custom_scope JsonapiCompliable::Scoping::Paginate @@ -436,7 +476,7 @@

    Method List

  • -
  • +
  • #custom_scope JsonapiCompliable::Scoping::Sort @@ -444,7 +484,7 @@

    Method List

  • -
  • +
  • #data JsonapiCompliable::Deserializer @@ -452,7 +492,7 @@

    Method List

  • -
  • +
  • deep_dup JsonapiCompliable::Util::Hash @@ -460,7 +500,7 @@

    Method List

  • -
  • +
  • deep_merge! JsonapiCompliable::Util::Hash @@ -468,7 +508,7 @@

    Method List

  • -
  • +
  • default_filter JsonapiCompliable::Resource @@ -476,7 +516,7 @@

    Method List

  • -
  • +
  • #default_filters JsonapiCompliable::Resource @@ -484,7 +524,7 @@

    Method List

  • -
  • +
  • default_hash JsonapiCompliable::Query @@ -492,7 +532,7 @@

    Method List

  • -
  • +
  • #default_jsonapi_render_options JsonapiCompliable::Base @@ -500,23 +540,23 @@

    Method List

  • -
  • +
  • - default_page_number + #default_page_number JsonapiCompliable::Resource
  • -
  • +
  • - #default_page_number + default_page_number JsonapiCompliable::Resource
  • -
  • +
  • default_page_size JsonapiCompliable::Resource @@ -524,7 +564,7 @@

    Method List

  • -
  • +
  • #default_page_size JsonapiCompliable::Resource @@ -532,7 +572,7 @@

    Method List

  • -
  • +
  • #default_sort JsonapiCompliable::Resource @@ -540,7 +580,7 @@

    Method List

  • -
  • +
  • default_sort JsonapiCompliable::Resource @@ -548,7 +588,7 @@

    Method List

  • -
  • +
  • #deserialized_params JsonapiCompliable::Base @@ -556,15 +596,15 @@

    Method List

  • -
  • +
  • - #destroy - JsonapiCompliable::Adapters::Abstract + #destroy + JsonapiCompliable::Adapters::ActiveRecord
  • -
  • +
  • #destroy JsonapiCompliable::Resource @@ -572,15 +612,15 @@

    Method List

  • -
  • +
  • - #destroy - JsonapiCompliable::Adapters::ActiveRecord + #destroy + JsonapiCompliable::Adapters::Abstract
  • -
  • +
  • #extra_attribute JsonapiCompliable::Extensions::ExtraAttribute::ClassMethods @@ -588,7 +628,7 @@

    Method List

  • -
  • +
  • extra_field JsonapiCompliable::Resource @@ -596,7 +636,7 @@

    Method List

  • -
  • +
  • #extra_fields JsonapiCompliable::Resource @@ -604,7 +644,7 @@

    Method List

  • -
  • +
  • #filter JsonapiCompliable::Adapters::Null @@ -612,23 +652,23 @@

    Method List

  • -
  • +
  • - #filter - JsonapiCompliable::Adapters::Abstract + #filter + JsonapiCompliable::Adapters::ActiveRecord
  • -
  • +
  • - #filter - JsonapiCompliable::Adapters::ActiveRecord + #filter + JsonapiCompliable::Adapters::Abstract
  • -
  • +
  • #filter_param JsonapiCompliable::Scoping::Filterable @@ -636,7 +676,7 @@

    Method List

  • -
  • +
  • #filters JsonapiCompliable::Resource @@ -644,7 +684,7 @@

    Method List

  • -
  • +
  • #find_filter JsonapiCompliable::Scoping::Filterable @@ -652,7 +692,7 @@

    Method List

  • -
  • +
  • #find_filter! JsonapiCompliable::Scoping::Filterable @@ -660,7 +700,7 @@

    Method List

  • -
  • +
  • #foreign_key JsonapiCompliable::Sideload @@ -668,23 +708,23 @@

    Method List

  • -
  • +
  • - #generate - JsonapiCompliable::Stats::Payload + generate + JsonapiCompliable::Util::RenderOptions
  • -
  • +
  • - generate - JsonapiCompliable::Util::RenderOptions + #generate + JsonapiCompliable::Stats::Payload
  • -
  • +
  • #group_by JsonapiCompliable::Sideload @@ -692,15 +732,15 @@

    Method List

  • -
  • +
  • - #grouper + #grouping_field JsonapiCompliable::Sideload
  • -
  • +
  • has_and_belongs_to_many JsonapiCompliable::Resource @@ -708,7 +748,7 @@

    Method List

  • -
  • +
  • #has_and_belongs_to_many JsonapiCompliable::Adapters::ActiveRecordSideloading @@ -716,7 +756,7 @@

    Method List

  • -
  • +
  • #has_many JsonapiCompliable::Adapters::ActiveRecordSideloading @@ -724,7 +764,7 @@

    Method List

  • -
  • +
  • has_many JsonapiCompliable::Resource @@ -732,7 +772,7 @@

    Method List

  • -
  • +
  • #has_one JsonapiCompliable::Adapters::ActiveRecordSideloading @@ -740,7 +780,7 @@

    Method List

  • -
  • +
  • has_one JsonapiCompliable::Resource @@ -748,7 +788,7 @@

    Method List

  • -
  • +
  • #id JsonapiCompliable::Deserializer @@ -756,6 +796,14 @@

    Method List

  • +
  • +
    + #include_directive + JsonapiCompliable::Query +
    +
  • + +
  • #include_directive @@ -766,7 +814,7 @@

    Method List

  • - #include_directive + #include_hash JsonapiCompliable::Query
  • @@ -774,8 +822,8 @@

    Method List

  • - #include_hash - JsonapiCompliable::Query + included + JsonapiCompliable
  • @@ -806,64 +854,64 @@

    Method List

  • - included - JsonapiCompliable + inherited + JsonapiCompliable::Resource
  • - inherited - JsonapiCompliable::Resource + #initialize + JsonapiCompliable::Util::Persistence
  • - #initialize - JsonapiCompliable::Util::RelationshipPayload + #initialize + JsonapiCompliable::Errors::UnsupportedPageSize
  • - #initialize - JsonapiCompliable::Errors::UnsupportedPageSize + #initialize + JsonapiCompliable::Stats::Payload
  • - #initialize - JsonapiCompliable::Sideload + #initialize + JsonapiCompliable::Query
  • - #initialize - JsonapiCompliable::Query + #initialize + JsonapiCompliable::Stats::DSL
  • - #initialize - JsonapiCompliable::Stats::Payload + #initialize + JsonapiCompliable::Sideload
  • -
    - #initialize - JsonapiCompliable::Scope +
    + #initialize + JsonapiCompliable::Util::ValidationResponse
  • @@ -878,47 +926,47 @@

    Method List

  • - #initialize - JsonapiCompliable::Util::Persistence + #initialize + JsonapiCompliable::Util::RelationshipPayload
  • - #initialize - JsonapiCompliable::Stats::DSL + #initialize + JsonapiCompliable::Errors::StatNotFound
  • - #initialize - JsonapiCompliable::Errors::StatNotFound + #initialize + JsonapiCompliable::Scoping::Base
  • - #initialize - JsonapiCompliable::Scoping::Base + #initialize + JsonapiCompliable::Scope
  • - #initialize - JsonapiCompliable::Util::ValidationResponse + iterate + JsonapiCompliable::Util::RelationshipPayload
  • - iterate + #iterate JsonapiCompliable::Util::RelationshipPayload
  • @@ -926,15 +974,15 @@

    Method List

  • - #iterate - JsonapiCompliable::Util::RelationshipPayload + jsonapi + JsonapiCompliable::Base
  • - jsonapi + #jsonapi_create JsonapiCompliable::Base
  • @@ -942,7 +990,7 @@

    Method List

  • - #jsonapi_create + #jsonapi_resource JsonapiCompliable::Base
  • @@ -1006,16 +1054,16 @@

    Method List

  • - #message - JsonapiCompliable::Errors::UnsupportedPageSize + #message + JsonapiCompliable::Errors::StatNotFound
  • - #message - JsonapiCompliable::Errors::StatNotFound + #message + JsonapiCompliable::Errors::UnsupportedPageSize
  • @@ -1038,8 +1086,8 @@

    Method List

  • - #minimum - JsonapiCompliable::Adapters::ActiveRecord + #minimum + JsonapiCompliable::Adapters::Null
  • @@ -1054,8 +1102,8 @@

    Method List

  • - #minimum - JsonapiCompliable::Adapters::Null + #minimum + JsonapiCompliable::Adapters::ActiveRecord
  • @@ -1110,16 +1158,16 @@

    Method List

  • - #order - JsonapiCompliable::Adapters::ActiveRecord + #order + JsonapiCompliable::Adapters::Null
  • - #order - JsonapiCompliable::Adapters::Null + #order + JsonapiCompliable::Adapters::ActiveRecord
  • @@ -1134,8 +1182,8 @@

    Method List

  • - #paginate - JsonapiCompliable::Adapters::ActiveRecord + #paginate + JsonapiCompliable::Adapters::Abstract
  • @@ -1150,16 +1198,16 @@

    Method List

  • - #paginate - JsonapiCompliable::Adapters::Abstract + #paginate + JsonapiCompliable::Adapters::Null
  • - #paginate - JsonapiCompliable::Adapters::Null + #paginate + JsonapiCompliable::Adapters::ActiveRecord
  • @@ -1181,6 +1229,14 @@

    Method List

  • +
    + #parent + JsonapiCompliable::Sideload +
    +
  • + + +
  • parse JsonapiCompliable::Util::FieldParams @@ -1188,7 +1244,7 @@

    Method List

  • -
  • +
  • #payload JsonapiCompliable::Util::RelationshipPayload @@ -1196,7 +1252,7 @@

    Method List

  • -
  • +
  • #persist_with_relationships JsonapiCompliable::Resource @@ -1204,7 +1260,7 @@

    Method List

  • -
  • +
  • #polymorphic JsonapiCompliable::Sideload @@ -1212,7 +1268,7 @@

    Method List

  • -
  • +
  • #polymorphic? JsonapiCompliable::Sideload @@ -1220,7 +1276,7 @@

    Method List

  • -
  • +
  • #polymorphic_belongs_to JsonapiCompliable::Adapters::ActiveRecordSideloading @@ -1228,7 +1284,7 @@

    Method List

  • -
  • +
  • polymorphic_belongs_to JsonapiCompliable::Resource @@ -1236,6 +1292,14 @@

    Method List

  • +
  • +
    + #polymorphic_child_for_type + JsonapiCompliable::Sideload +
    +
  • + +
  • #polymorphic_groups @@ -1270,24 +1334,24 @@

    Method List

  • - #query_hash - JsonapiCompliable::Scoping::Base + #query_hash + JsonapiCompliable::Scope
  • - #query_hash - JsonapiCompliable::Scope + #query_hash + JsonapiCompliable::Base
  • - #query_hash - JsonapiCompliable::Base + #query_hash + JsonapiCompliable::Scoping::Base
  • @@ -1310,8 +1374,8 @@

    Method List

  • - #resolve - JsonapiCompliable::Scope + #resolve + JsonapiCompliable::Adapters::Abstract
  • @@ -1326,24 +1390,24 @@

    Method List

  • - #resolve - JsonapiCompliable::Adapters::Abstract + #resolve + JsonapiCompliable::Resource
  • - #resolve - JsonapiCompliable::Adapters::ActiveRecord + #resolve + JsonapiCompliable::Scope
  • - #resolve - JsonapiCompliable::Resource + #resolve + JsonapiCompliable::Adapters::ActiveRecord
  • @@ -1365,14 +1429,6 @@

    Method List

  • -
    - #resource - JsonapiCompliable::Base -
    -
  • - - -
  • #resource JsonapiCompliable::Scoping::Base @@ -1380,15 +1436,15 @@

    Method List

  • -
  • +
  • - #resource - JsonapiCompliable::Sideload + #resource + JsonapiCompliable::Query
  • -
  • +
  • #resource JsonapiCompliable::Util::RelationshipPayload @@ -1396,15 +1452,15 @@

    Method List

  • -
  • +
  • - #resource - JsonapiCompliable::Query + #resource + JsonapiCompliable::Sideload
  • -
  • +
  • #resource_class JsonapiCompliable::Sideload @@ -1412,7 +1468,7 @@

    Method List

  • -
  • +
  • #run JsonapiCompliable::Util::Persistence @@ -1420,7 +1476,7 @@

    Method List

  • -
  • +
  • #scope JsonapiCompliable::Sideload @@ -1428,7 +1484,7 @@

    Method List

  • -
  • +
  • #scope_proc JsonapiCompliable::Sideload @@ -1436,7 +1492,7 @@

    Method List

  • -
  • +
  • scrub JsonapiCompliable::Util::IncludeParams @@ -1444,7 +1500,7 @@

    Method List

  • -
  • +
  • #sideload JsonapiCompliable::Resource @@ -1452,7 +1508,7 @@

    Method List

  • -
  • +
  • #sideload JsonapiCompliable::Sideload @@ -1460,14 +1516,6 @@

    Method List

  • -
  • -
    - #sideload_whitelist - JsonapiCompliable::Resource -
    -
  • - -
  • sideload_whitelist @@ -1478,7 +1526,7 @@

    Method List

  • - sideloading + #sideload_whitelist JsonapiCompliable::Resource
  • @@ -1493,6 +1541,14 @@

    Method List

  • +
    + sideloading + JsonapiCompliable::Resource +
    +
  • + + +
  • #sideloading_module JsonapiCompliable::Adapters::ActiveRecord @@ -1500,7 +1556,7 @@

    Method List

  • -
  • +
  • #sideloading_module JsonapiCompliable::Adapters::Abstract @@ -1508,7 +1564,7 @@

    Method List

  • -
  • +
  • #sideloads JsonapiCompliable::Sideload @@ -1516,7 +1572,7 @@

    Method List

  • -
  • +
  • sort JsonapiCompliable::Resource @@ -1524,7 +1580,7 @@

    Method List

  • -
  • +
  • #sorting JsonapiCompliable::Resource @@ -1532,7 +1588,7 @@

    Method List

  • -
  • +
  • #stat JsonapiCompliable::Resource @@ -1540,7 +1596,7 @@

    Method List

  • -
  • +
  • #stats JsonapiCompliable::Resource @@ -1548,7 +1604,7 @@

    Method List

  • -
  • +
  • #success? JsonapiCompliable::Util::ValidationResponse @@ -1556,6 +1612,14 @@

    Method List

  • +
  • +
    + #sum + JsonapiCompliable::Adapters::ActiveRecord +
    +
  • + +
  • #sum @@ -1574,24 +1638,24 @@

    Method List

  • - #sum - JsonapiCompliable::Adapters::ActiveRecord + #sum! + JsonapiCompliable::Stats::DSL
  • - #sum! - JsonapiCompliable::Stats::DSL + #to_a + JsonapiCompliable::Util::ValidationResponse
  • - #to_a - JsonapiCompliable::Util::ValidationResponse + #to_hash + JsonapiCompliable::Query
  • @@ -1606,96 +1670,96 @@

    Method List

  • - #to_hash - JsonapiCompliable::Query + #transaction + JsonapiCompliable::Adapters::Null
  • - #transaction - JsonapiCompliable::Resource + #transaction + JsonapiCompliable::Adapters::ActiveRecord
  • - #transaction - JsonapiCompliable::Adapters::ActiveRecord + #transaction + JsonapiCompliable::Adapters::Abstract
  • - #transaction - JsonapiCompliable::Adapters::Null + #transaction + JsonapiCompliable::Resource
  • - #transaction - JsonapiCompliable::Adapters::Abstract + #type + JsonapiCompliable::Resource
  • - #type - JsonapiCompliable::Sideload + type + JsonapiCompliable::Resource
  • - #type - JsonapiCompliable::Resource + #type + JsonapiCompliable::Sideload
  • - type - JsonapiCompliable::Resource + #update + JsonapiCompliable::Adapters::Abstract
  • - #update - JsonapiCompliable::Resource + #update + JsonapiCompliable::Adapters::ActiveRecord
  • - #update - JsonapiCompliable::Adapters::ActiveRecord + #update + JsonapiCompliable::Resource
  • - #update - JsonapiCompliable::Adapters::Abstract + use_adapter + JsonapiCompliable::Resource
  • - use_adapter - JsonapiCompliable::Resource + with_context + JsonapiCompliable
  • diff --git a/docs/top-level-namespace.html b/docs/top-level-namespace.html index 749c332..b86f0eb 100644 --- a/docs/top-level-namespace.html +++ b/docs/top-level-namespace.html @@ -82,7 +82,7 @@

    Defined Under Namespace

    - Modules: JsonapiCompliable + Modules: Jsonapi, JsonapiCompliable @@ -100,7 +100,7 @@

    Defined Under Namespace

    diff --git a/lib/jsonapi_compliable/resource.rb b/lib/jsonapi_compliable/resource.rb index 1f60c13..9a3fa5f 100644 --- a/lib/jsonapi_compliable/resource.rb +++ b/lib/jsonapi_compliable/resource.rb @@ -87,8 +87,6 @@ module JsonapiCompliable # scope: -> { Comment.all }, # resource: CommentResource, # foreign_key: :post_id - # - # @attr_reader [Hash] context A hash of +object+ and +namespace+ - Example object is a Rails controller, example namespace would be +:index+ or +:show+ class Resource extend Forwardable attr_reader :context @@ -451,16 +449,24 @@ def with_context(object, namespace = nil) end end - # The current context set by +#with_context+ in the form of + # The current context **object** set by +#with_context+. If you are + # using Rails, this is a controller instance. # - # { object: context_obj, namespace: :index } + # This method is equivalent to +JsonapiCompliable.context[:object]+ # # @see #with_context - # @return [Hash] the context hash + # @return the context object def context JsonapiCompliable.context[:object] end + # The current context **namespace** set by +#with_context+. If you + # are using Rails, this is the controller method name (e.g. +:index+) + # + # This method is equivalent to +JsonapiCompliable.context[:namespace]+ + # + # @see #with_context + # @return [Symbol] the context namespace def context_namespace JsonapiCompliable.context[:namespace] end From 715871ad9d7d8deedc52620c57510647ab36346f Mon Sep 17 00:00:00 2001 From: Lee Richmond Date: Wed, 7 Jun 2017 12:58:12 -0400 Subject: [PATCH 2/2] Fix string/symbol mismatch for polymorphic writes --- lib/jsonapi_compliable/sideload.rb | 2 +- spec/fixtures/employee_directory.rb | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/jsonapi_compliable/sideload.rb b/lib/jsonapi_compliable/sideload.rb index a5db152..10f4b96 100644 --- a/lib/jsonapi_compliable/sideload.rb +++ b/lib/jsonapi_compliable/sideload.rb @@ -332,7 +332,7 @@ def to_hash(processed = []) # @api private def polymorphic_child_for_type(type) polymorphic_groups.values.find do |v| - v.resource_class.config[:type] == type + v.resource_class.config[:type] == type.to_sym end end diff --git a/spec/fixtures/employee_directory.rb b/spec/fixtures/employee_directory.rb index 224dece..d491e35 100644 --- a/spec/fixtures/employee_directory.rb +++ b/spec/fixtures/employee_directory.rb @@ -69,17 +69,17 @@ class ApplicationResource < JsonapiCompliable::Resource end class ClassificationResource < ApplicationResource - type 'classifications' + type :classifications model Classification end class DepartmentResource < ApplicationResource - type 'departments' + type :departments model Department end class PositionResource < ApplicationResource - type 'positions' + type :positions model Position belongs_to :department, @@ -89,17 +89,17 @@ class PositionResource < ApplicationResource end class OfficeResource < ApplicationResource - type 'offices' + type :offices model Office end class HomeOfficeResource < ApplicationResource - type 'home_offices' + type :home_offices model HomeOffice end class EmployeeResource < ApplicationResource - type 'employees' + type :employees model Employee belongs_to :classification,