active_model_serializers 0.10.1 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +9 -1
- data/Rakefile +3 -3
- data/active_model_serializers.gemspec +15 -15
- data/docs/general/fields.md +31 -0
- data/docs/general/rendering.md +7 -2
- data/docs/general/serializers.md +32 -0
- data/docs/howto/add_pagination_links.md +2 -3
- data/docs/integrations/ember-and-json-api.md +25 -10
- data/lib/action_controller/serialization.rb +4 -3
- data/lib/active_model/serializer.rb +3 -4
- data/lib/active_model/serializer/array_serializer.rb +8 -5
- data/lib/active_model/serializer/associations.rb +2 -2
- data/lib/active_model/serializer/caching.rb +11 -8
- data/lib/active_model/serializer/error_serializer.rb +11 -7
- data/lib/active_model/serializer/errors_serializer.rb +25 -20
- data/lib/active_model/serializer/lint.rb +134 -130
- data/lib/active_model/serializer/version.rb +1 -1
- data/lib/active_model_serializers/deprecate.rb +1 -1
- data/lib/active_model_serializers/model.rb +1 -1
- data/lib/active_model_serializers/railtie.rb +1 -1
- data/lib/active_model_serializers/register_jsonapi_renderer.rb +37 -35
- data/lib/generators/rails/serializer_generator.rb +3 -3
- data/lib/grape/active_model_serializers.rb +7 -5
- data/test/action_controller/adapter_selector_test.rb +3 -3
- data/test/action_controller/json_api/errors_test.rb +5 -6
- data/test/action_controller/json_api/linked_test.rb +4 -4
- data/test/action_controller/json_api/pagination_test.rb +19 -19
- data/test/action_controller/serialization_test.rb +1 -1
- data/test/active_model_serializers/json_pointer_test.rb +15 -13
- data/test/active_model_serializers/key_transform_test.rb +254 -252
- data/test/active_model_serializers/model_test.rb +6 -4
- data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +2 -2
- data/test/adapter/json/transform_test.rb +14 -14
- data/test/adapter/json_api/errors_test.rb +9 -9
- data/test/adapter/json_api/has_many_test.rb +18 -18
- data/test/adapter/json_api/json_api_test.rb +5 -7
- data/test/adapter/json_api/linked_test.rb +1 -1
- data/test/adapter/json_api/pagination_links_test.rb +6 -6
- data/test/adapter/json_api/resource_meta_test.rb +3 -3
- data/test/adapter/json_api/transform_test.rb +218 -218
- data/test/adapter/json_api/type_test.rb +1 -1
- data/test/adapter/json_test.rb +8 -8
- data/test/adapter/null_test.rb +1 -2
- data/test/adapter/polymorphic_test.rb +5 -5
- data/test/adapter_test.rb +1 -1
- data/test/benchmark/bm_caching.rb +1 -1
- data/test/cache_test.rb +29 -1
- data/test/collection_serializer_test.rb +2 -2
- data/test/fixtures/poro.rb +2 -2
- data/test/grape_test.rb +130 -128
- data/test/lint_test.rb +1 -1
- data/test/logger_test.rb +13 -11
- data/test/serializable_resource_test.rb +12 -16
- data/test/serializers/associations_test.rb +10 -10
- data/test/serializers/attribute_test.rb +1 -1
- data/test/serializers/attributes_test.rb +1 -1
- data/test/serializers/fieldset_test.rb +1 -1
- data/test/serializers/root_test.rb +1 -1
- data/test/serializers/serializer_for_test.rb +3 -1
- data/test/support/isolated_unit.rb +4 -2
- data/test/support/serialization_testing.rb +7 -5
- metadata +3 -3
- data/.rubocop_todo.yml +0 -167
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9ab72fd33fbf20e8630b9109d18edda9272658e
|
4
|
+
data.tar.gz: 8654e40594d8bf26038b329a8044dc9197bc5733
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 454504b650ab8302e6e1f87b15f952ff3068033bcaaac136764211fbcb724759b354d66b7e0b662e1e10a1b57734173b4843f96eb2344c164d568fae824da8b3
|
7
|
+
data.tar.gz: 56355761907c1ea7882d7b04dc8adcff8538f188bd418946c2493a267188cedfef4247e410206b4c479575ba926efa1259c5966e166b901eaea26c45b7d4aae8
|
data/.rubocop.yml
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
inherit_from: .rubocop_todo.yml
|
2
|
-
|
3
1
|
AllCops:
|
4
|
-
TargetRubyVersion: 2.
|
2
|
+
TargetRubyVersion: 2.1
|
5
3
|
Exclude:
|
6
4
|
- config/initializers/forbidden_yaml.rb
|
7
5
|
- !ruby/regexp /(vendor|bundle|bin|db|tmp)\/.*/
|
@@ -46,7 +44,7 @@ Style/AlignParameters:
|
|
46
44
|
EnforcedStyle: with_fixed_indentation
|
47
45
|
|
48
46
|
Style/ClassAndModuleChildren:
|
49
|
-
EnforcedStyle:
|
47
|
+
EnforcedStyle: nested
|
50
48
|
|
51
49
|
Style/Documentation:
|
52
50
|
Enabled: false
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
## 0.10.x
|
2
2
|
|
3
|
-
### [master (unreleased)](https://github.com/rails-api/active_model_serializers/compare/v0.10.
|
3
|
+
### [master (unreleased)](https://github.com/rails-api/active_model_serializers/compare/v0.10.2...master)
|
4
4
|
|
5
5
|
Breaking changes:
|
6
6
|
|
@@ -10,6 +10,14 @@ Fixes:
|
|
10
10
|
|
11
11
|
Misc:
|
12
12
|
|
13
|
+
### [v0.10.2 (2016-07-05)(unreleased)](https://github.com/rails-api/active_model_serializers/compare/v0.10.1...v0.10.2)
|
14
|
+
|
15
|
+
Fixes:
|
16
|
+
- [#1814] (https://github.com/rails-api/active_model_serializers/pull/1814) Ensuring read_multi works with fragment cache
|
17
|
+
|
18
|
+
Misc:
|
19
|
+
- [#1808](https://github.com/rails-api/active_model_serializers/pull/1808) Adds documentation for `fields` option. (@luizkowalski)
|
20
|
+
|
13
21
|
### [v0.10.1 (2016-06-16)](https://github.com/rails-api/active_model_serializers/compare/v0.10.0...v0.10.1)
|
14
22
|
|
15
23
|
Features:
|
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ rescue LoadError
|
|
5
5
|
end
|
6
6
|
begin
|
7
7
|
require 'simplecov'
|
8
|
-
rescue LoadError
|
8
|
+
rescue LoadError # rubocop:disable Lint/HandleExceptions
|
9
9
|
end
|
10
10
|
|
11
11
|
Bundler::GemHelper.install_tasks
|
@@ -33,7 +33,7 @@ end
|
|
33
33
|
begin
|
34
34
|
require 'rubocop'
|
35
35
|
require 'rubocop/rake_task'
|
36
|
-
rescue LoadError
|
36
|
+
rescue LoadError # rubocop:disable Lint/HandleExceptions
|
37
37
|
else
|
38
38
|
Rake::Task[:rubocop].clear if Rake::Task.task_defined?(:rubocop)
|
39
39
|
require 'rbconfig'
|
@@ -100,4 +100,4 @@ else
|
|
100
100
|
end
|
101
101
|
|
102
102
|
desc 'CI test task'
|
103
|
-
task :
|
103
|
+
task ci: [:default]
|
@@ -23,31 +23,31 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
rails_versions = ['>= 4.1', '< 6']
|
25
25
|
spec.add_runtime_dependency 'activemodel', rails_versions
|
26
|
-
|
27
|
-
|
26
|
+
# 'activesupport', rails_versions
|
27
|
+
# 'builder'
|
28
28
|
|
29
29
|
spec.add_runtime_dependency 'actionpack', rails_versions
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
# 'activesupport', rails_versions
|
31
|
+
# 'rack'
|
32
|
+
# 'rack-test', '~> 0.6.2'
|
33
33
|
|
34
34
|
spec.add_runtime_dependency 'railties', rails_versions
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
# 'activesupport', rails_versions
|
36
|
+
# 'actionpack', rails_versions
|
37
|
+
# 'rake', '>= 0.8.7'
|
38
38
|
|
39
39
|
# 'activesupport', rails_versions
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
# 'i18n,
|
41
|
+
# 'tzinfo'
|
42
|
+
# 'minitest'
|
43
|
+
# 'thread_safe'
|
44
44
|
|
45
45
|
spec.add_runtime_dependency 'jsonapi', '~> 0.1.1.beta2'
|
46
46
|
|
47
47
|
spec.add_development_dependency 'activerecord', rails_versions
|
48
|
-
|
49
|
-
|
50
|
-
|
48
|
+
# arel
|
49
|
+
# activesupport
|
50
|
+
# activemodel
|
51
51
|
|
52
52
|
# Soft dependency for pagination
|
53
53
|
spec.add_development_dependency 'kaminari', ' ~> 0.16.3'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
[Back to Guides](../README.md)
|
2
|
+
|
3
|
+
# Fields
|
4
|
+
|
5
|
+
If for any reason, you need to restrict the fields returned, you should use `fields` option.
|
6
|
+
|
7
|
+
For example, if you have a serializer like this
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
class UserSerializer < ActiveModel::Serializer
|
11
|
+
attributes :access_token, :first_name, :last_name
|
12
|
+
end
|
13
|
+
```
|
14
|
+
|
15
|
+
and in a specific controller, you want to return `access_token` only, `fields` will help you:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
class AnonymousController < ApplicationController
|
19
|
+
def create
|
20
|
+
render json: User.create(activation_state: 'anonymous'), fields: [:access_token], status: 201
|
21
|
+
end
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
Note that this is only valid for the `json` and `attributes` adapter. For the `json_api` adapter, you would use
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
render json: @user, fields: { users: [:access_token] }
|
29
|
+
```
|
30
|
+
|
31
|
+
Where `users` is the JSONAPI type.
|
data/docs/general/rendering.md
CHANGED
@@ -73,7 +73,12 @@ See [ARCHITECTURE](../ARCHITECTURE.md) for more information.
|
|
73
73
|
|
74
74
|
#### fields
|
75
75
|
|
76
|
-
|
76
|
+
If you are using `json` or `attributes` adapter
|
77
|
+
```ruby
|
78
|
+
render json: @user, fields: [:access_token]
|
79
|
+
```
|
80
|
+
|
81
|
+
See [Fields](fields.md) for more information.
|
77
82
|
|
78
83
|
#### adapter
|
79
84
|
|
@@ -83,7 +88,7 @@ PR please :)
|
|
83
88
|
|
84
89
|
```render json: posts, each_serializer: PostSerializer, key_transform: :camel_lower```
|
85
90
|
|
86
|
-
See [Key Transforms](key_transforms.md) for more
|
91
|
+
See [Key Transforms](key_transforms.md) for more information.
|
87
92
|
|
88
93
|
#### meta
|
89
94
|
|
data/docs/general/serializers.md
CHANGED
@@ -314,6 +314,38 @@ So that when we render the `#edit` action, we'll get
|
|
314
314
|
|
315
315
|
Where `can_edit` is `view_context.current_user.admin?` (true).
|
316
316
|
|
317
|
+
You can also tell what to set as `serialization_scope` for specific actions.
|
318
|
+
|
319
|
+
For example, use `admin_user` only for `Admin::PostSerializer` and `current_user` for rest.
|
320
|
+
|
321
|
+
```ruby
|
322
|
+
class PostsController < ActionController::Base
|
323
|
+
|
324
|
+
before_action only: :edit do
|
325
|
+
self.class.serialization_scope :admin_user
|
326
|
+
end
|
327
|
+
|
328
|
+
def show
|
329
|
+
render json: @post, serializer: PostSerializer
|
330
|
+
end
|
331
|
+
|
332
|
+
def edit
|
333
|
+
@post.save
|
334
|
+
render json: @post, serializer: Admin::PostSerializer
|
335
|
+
end
|
336
|
+
|
337
|
+
private
|
338
|
+
|
339
|
+
def admin_user
|
340
|
+
User.new(id: 2, name: 'Bob', admin: true)
|
341
|
+
end
|
342
|
+
|
343
|
+
def current_user
|
344
|
+
User.new(id: 2, name: 'Bob', admin: false)
|
345
|
+
end
|
346
|
+
end
|
347
|
+
```
|
348
|
+
|
317
349
|
#### #read_attribute_for_serialization(key)
|
318
350
|
|
319
351
|
The serialized value for a given key. e.g. `read_attribute_for_serialization(:title) #=> 'Hello World'`
|
@@ -81,7 +81,7 @@ def pagination_dict(object)
|
|
81
81
|
{
|
82
82
|
current_page: object.current_page,
|
83
83
|
next_page: object.next_page,
|
84
|
-
prev_page: object.prev_page,
|
84
|
+
prev_page: object.prev_page, # use object.previous_page when using will_paginate
|
85
85
|
total_pages: object.total_pages,
|
86
86
|
total_count: object.total_count
|
87
87
|
}
|
@@ -126,14 +126,13 @@ def meta_attributes(resource, extra_meta = {})
|
|
126
126
|
{
|
127
127
|
current_page: resource.current_page,
|
128
128
|
next_page: resource.next_page,
|
129
|
-
prev_page: resource.prev_page,
|
129
|
+
prev_page: resource.prev_page, # use resource.previous_page when using will_paginate
|
130
130
|
total_pages: resource.total_pages,
|
131
131
|
total_count: resource.total_count
|
132
132
|
}.merge(extra_meta)
|
133
133
|
end
|
134
134
|
```
|
135
135
|
|
136
|
-
|
137
136
|
### Attributes adapter
|
138
137
|
|
139
138
|
This adapter does not allow us to use `meta` key, due to that it is not possible to add pagination links.
|
@@ -17,17 +17,32 @@ To solve this, in Ember, both the adapter and the serializer will need some modi
|
|
17
17
|
|
18
18
|
### Server-Side Changes
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
First, set the adapter type in an initializer file:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
# config/initializers/active_model_serializers.rb
|
24
|
+
ActiveModelSerializers.config.adapter = :json_api
|
25
|
+
```
|
26
|
+
|
27
|
+
or:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
# config/initializers/active_model_serializers.rb
|
31
|
+
ActiveModelSerializers.config.adapter = ActiveModelSerializers::Adapter::JsonApi
|
32
|
+
```
|
33
|
+
|
34
|
+
You will also want to set the `key_transform` to `:unaltered` since you will adjust the attributes in your Ember serializer to use underscores instead of dashes later. You could also use `:underscore`, but `:unaltered` is better for performance.
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
# config/initializers/active_model_serializers.rb
|
38
|
+
ActiveModelSerializers.config.key_transform = :unaltered
|
39
|
+
```
|
40
|
+
|
41
|
+
Lastly, in order to properly handle JSON API responses, we need to register a JSON API renderer, like so:
|
42
|
+
|
22
43
|
```ruby
|
23
|
-
|
24
|
-
|
25
|
-
text/x-json
|
26
|
-
application/json
|
27
|
-
)
|
28
|
-
|
29
|
-
Mime::Type.unregister :json
|
30
|
-
Mime::Type.register 'application/json', :json, api_mime_types
|
44
|
+
# config/initializers/active_model_serializers.rb
|
45
|
+
require 'active_model_serializers/register_jsonapi_renderer'
|
31
46
|
```
|
32
47
|
|
33
48
|
### Adapter Changes
|
@@ -19,12 +19,13 @@ module ActionController
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def serialization_scope
|
22
|
-
|
23
|
-
|
22
|
+
return unless _serialization_scope && respond_to?(_serialization_scope, true)
|
23
|
+
|
24
|
+
send(_serialization_scope)
|
24
25
|
end
|
25
26
|
|
26
27
|
def get_serializer(resource, options = {})
|
27
|
-
|
28
|
+
unless use_adapter?
|
28
29
|
warn 'ActionController::Serialization#use_adapter? has been removed. '\
|
29
30
|
"Please pass 'adapter: false' or see ActiveSupport::SerializableResource.new"
|
30
31
|
options[:adapter] = false
|
@@ -125,10 +125,9 @@ module ActiveModel
|
|
125
125
|
self.root = instance_options[:root]
|
126
126
|
self.scope = instance_options[:scope]
|
127
127
|
|
128
|
-
scope_name = instance_options[:scope_name]
|
129
|
-
|
130
|
-
|
131
|
-
end
|
128
|
+
return if !(scope_name = instance_options[:scope_name]) || respond_to?(scope_name)
|
129
|
+
|
130
|
+
define_singleton_method scope_name, -> { scope }
|
132
131
|
end
|
133
132
|
|
134
133
|
def success?
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'active_model/serializer/collection_serializer'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
|
3
|
+
module ActiveModel
|
4
|
+
class Serializer
|
5
|
+
class ArraySerializer < CollectionSerializer
|
6
|
+
class << self
|
7
|
+
extend ActiveModelSerializers::Deprecate
|
8
|
+
deprecate :new, 'ActiveModel::Serializer::CollectionSerializer.'
|
9
|
+
end
|
7
10
|
end
|
8
11
|
end
|
9
12
|
end
|
@@ -39,7 +39,7 @@ module ActiveModel
|
|
39
39
|
# @example
|
40
40
|
# has_many :comments, serializer: CommentSummarySerializer
|
41
41
|
#
|
42
|
-
def has_many(name, options = {}, &block)
|
42
|
+
def has_many(name, options = {}, &block) # rubocop:disable Style/PredicateName
|
43
43
|
associate(HasManyReflection.new(name, options, block))
|
44
44
|
end
|
45
45
|
|
@@ -61,7 +61,7 @@ module ActiveModel
|
|
61
61
|
# @example
|
62
62
|
# has_one :author, serializer: AuthorSerializer
|
63
63
|
#
|
64
|
-
def has_one(name, options = {}, &block)
|
64
|
+
def has_one(name, options = {}, &block) # rubocop:disable Style/PredicateName
|
65
65
|
associate(HasOneReflection.new(name, options, block))
|
66
66
|
end
|
67
67
|
|
@@ -197,7 +197,7 @@ module ActiveModel
|
|
197
197
|
def object_cache_key(serializer, adapter_instance)
|
198
198
|
return unless serializer.present? && serializer.object.present?
|
199
199
|
|
200
|
-
serializer.class.cache_enabled? ? serializer.cache_key(adapter_instance) : nil
|
200
|
+
(serializer.class.cache_enabled? || serializer.class.fragment_cache_enabled?) ? serializer.cache_key(adapter_instance) : nil
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
@@ -211,7 +211,7 @@ module ActiveModel
|
|
211
211
|
end
|
212
212
|
end
|
213
213
|
elsif serializer_class.fragment_cache_enabled?
|
214
|
-
fetch_attributes_fragment(adapter_instance)
|
214
|
+
fetch_attributes_fragment(adapter_instance, cached_attributes)
|
215
215
|
else
|
216
216
|
attributes(fields, true)
|
217
217
|
end
|
@@ -230,7 +230,8 @@ module ActiveModel
|
|
230
230
|
# 1. Determine cached fields from serializer class options
|
231
231
|
# 2. Get non_cached_fields and fetch cache_fields
|
232
232
|
# 3. Merge the two hashes using adapter_instance#fragment_cache
|
233
|
-
|
233
|
+
# rubocop:disable Metrics/AbcSize
|
234
|
+
def fetch_attributes_fragment(adapter_instance, cached_attributes = {})
|
234
235
|
serializer_class._cache_options ||= {}
|
235
236
|
serializer_class._cache_options[:key] = serializer_class._cache_key if serializer_class._cache_key
|
236
237
|
fields = serializer_class.fragmented_attributes
|
@@ -243,15 +244,17 @@ module ActiveModel
|
|
243
244
|
cached_fields = fields[:cached].dup
|
244
245
|
key = cache_key(adapter_instance)
|
245
246
|
cached_hash =
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
247
|
+
cached_attributes.fetch(key) do
|
248
|
+
serializer_class.cache_store.fetch(key, serializer_class._cache_options) do
|
249
|
+
hash = attributes(cached_fields, true)
|
250
|
+
include_directive = JSONAPI::IncludeDirective.new(cached_fields - hash.keys)
|
251
|
+
hash.merge! resource_relationships({}, { include_directive: include_directive }, adapter_instance)
|
252
|
+
end
|
250
253
|
end
|
251
|
-
|
252
254
|
# Merge both results
|
253
255
|
adapter_instance.fragment_cache(cached_hash, non_cached_hash)
|
254
256
|
end
|
257
|
+
# rubocop:enable Metrics/AbcSize
|
255
258
|
|
256
259
|
def cache_key(adapter_instance)
|
257
260
|
return @cache_key if defined?(@cache_key)
|
@@ -1,10 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module ActiveModel
|
2
|
+
class Serializer
|
3
|
+
class ErrorSerializer < ActiveModel::Serializer
|
4
|
+
# @return [Hash<field_name,Array<error_message>>]
|
5
|
+
def as_json
|
6
|
+
object.errors.messages
|
7
|
+
end
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
def success?
|
10
|
+
false
|
11
|
+
end
|
12
|
+
end
|
9
13
|
end
|
10
14
|
end
|
@@ -1,27 +1,32 @@
|
|
1
1
|
require 'active_model/serializer/error_serializer'
|
2
|
-
class ActiveModel::Serializer::ErrorsSerializer
|
3
|
-
include Enumerable
|
4
|
-
delegate :each, to: :@serializers
|
5
|
-
attr_reader :object, :root
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
3
|
+
module ActiveModel
|
4
|
+
class Serializer
|
5
|
+
class ErrorsSerializer
|
6
|
+
include Enumerable
|
7
|
+
delegate :each, to: :@serializers
|
8
|
+
attr_reader :object, :root
|
15
9
|
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
def initialize(resources, options = {})
|
11
|
+
@root = options[:root]
|
12
|
+
@object = resources
|
13
|
+
@serializers = resources.map do |resource|
|
14
|
+
serializer_class = options.fetch(:serializer) { ActiveModel::Serializer::ErrorSerializer }
|
15
|
+
serializer_class.new(resource, options.except(:serializer))
|
16
|
+
end
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
def success?
|
20
|
+
false
|
21
|
+
end
|
23
22
|
|
24
|
-
|
23
|
+
def json_key
|
24
|
+
nil
|
25
|
+
end
|
25
26
|
|
26
|
-
|
27
|
+
protected
|
28
|
+
|
29
|
+
attr_reader :serializers
|
30
|
+
end
|
31
|
+
end
|
27
32
|
end
|