Benjamin Fleischer
9d65f0adc5
Distinguish options ivar from local; Extract latent Adapter::CachedSerializer
2015-09-17 10:45:09 -05:00
João M. D. Moura
1ca73e0c33
updating version to new release
2015-09-16 12:19:44 -03:00
L. Preston Sego III
1bff6173d1
Merge pull request #1089 from bf4/add_logger
...
Add ActiveModelSerializers.logger with default null device
2015-09-15 14:51:29 -04:00
João Moura
479146c02a
Merge pull request #1121 from beauby/fix-jsonapi-links
...
Refactor `add_links` in JSONAPI adapter.
2015-09-15 05:00:39 -03:00
Lucas Hosseini
fb7ec88e2e
Remove unnecessary parentheses accidentally reintroduced in #1017 .
2015-09-15 00:25:37 +02:00
Lucas Hosseini
319a9071af
Remove legacy method accidentally reintroduced in #1017 .
2015-09-15 00:22:28 +02:00
Lucas Hosseini
285cdf841e
Split serializable_hash into two methods.
2015-09-14 06:46:52 +02:00
Lucas Hosseini
572ff7db20
Refactor add_links in JSONAPI adapter.
2015-09-14 06:46:52 +02:00
Lucas Hosseini
2789a579e8
Merge pull request #1131 from beauby/jsonapi-include-tree
...
Extended format for JSONAPI `include` option
2015-09-13 23:10:05 +02:00
Lucas Hosseini
ce7a839f3d
Extended format for JSONAPI include option.
2015-09-13 22:45:47 +02:00
Ville Lautanala
fada4dcb08
Fix typo in fieldset exception
2015-09-12 18:56:15 +03:00
L. Preston Sego III
b594d1487b
Merge pull request #1132 from beauby/fix-flatten-json
...
Get rid of unnecessary instance variables, and implied dependencies.
2015-09-12 11:51:38 -04:00
Lucas Hosseini
a9d07cd68f
Get rid of unnecessary instance variables, and implied dependencies.
2015-09-10 04:02:06 +02:00
Benjamin Fleischer
28345adef0
Use Adapter.const_get instead of safe_constantize
...
(Thanks to sandstrom for the reference to ActiveJob::QueueAdapters
a11571cec3/activejob/lib/active_job/queue_adapters.rb (L123-L133)
2015-09-09 08:55:20 -05:00
Benjamin Fleischer
363345b8dd
Rename Adapter.get to Adapter.lookup
...
Per https://github.com/rails-api/active_model_serializers/pull/1017#discussion_r39003855
comment by sandstrom in discussion of the inherited hook
> I'm thinking that it would be better to register adapters manually, without using the hook, i.e.
> have people call ActiveModel::Serializer::Adapter.register directly (perhaps in an initializer).
> Possibly, some inspiration can be taken from how ActiveJob adapters are wired[1].
> [1] a11571cec3/activejob/lib/active_job/queue_adapter.rb (L52-L56)
2015-09-09 08:55:20 -05:00
Benjamin Fleischer
af99c0d9e6
Ensure inheritance hooks run
...
I was seeing transient failures where adapters may not be registered.
e.g. https://travis-ci.org/rails-api/active_model_serializers/builds/77735382
Since we're using the Adapter, JsonApi, and Json classes
as namespaces, some of the conventions we use for modules don't apply.
Basically, we don't want to define the class anywhere besides itself.
Otherwise, the inherited hooks may not run, and some adapters may not
be registered.
For example:
If we have a class Api `class Api; end`
And Api is also used as a namespace for `Api::Product`
And the classes are defined in different files.
In one file:
```ruby
class Api
autoload :Product
def self.inherited(subclass)
puts
p [:inherited, subclass.name]
puts
end
end
```
And in another:
```ruby
class Api
class Product < Api
def sell_sell_sell!
# TODO: sell
end
end
end
```
If we load the Api class file first, the inherited hook will be defined on the class
so that when we load the Api::Product class, we'll see the output:
```plain
[ :inherited, Api::Product]
```
However, if we load the Api::Product class first, since it defines the `Api` class
and then inherited from it, the Api file was never loaded, the hook never defined,
and thus never run.
By defining the class as `class Api::Product < Api` We ensure the the Api class
MUST be defined, and thus, the hook will be defined and run and so sunshine and unicorns.
Appendix:
The below would work, but triggers a circular reference warning.
It's also not recommended to mix require with autoload.
```ruby
require 'api'
class Api
class Product < Api
def sell_sell_sell!
# TODO: sell
end
end
end
```
This failure scenario was introduced by removing the circular reference warnings in
https://github.com/rails-api/active_model_serializers/pull/1067
Style note:
To make diffs on the adapters smalleer and easier to read, I've maintained the same
identention that was in the original file. I've decided to prefer ease of reading
the diff over style, esp. since we may later return to the preferred class declaration style.
with '#' will be ignored, and an empty message aborts the commit.
2015-09-09 08:55:20 -05:00
Benjamin Fleischer
d9e76c29d5
Make Adapters registerable so they are not namespace-constrained
...
Changes:
- Introduce Adapter::get for use by Serializer.adapter
- Move Adapter-finding logic from Adapter::adapter_class into Adapter::get
Introduced interfaces:
- non-inherited methods
```ruby
ActiveModel::Serializer::Adapter.adapter_map # a Hash<adapter_name, adapter_class>
ActiveModel::Serializer::Adapter.adapters # an Array<adapter_name>
ActiveModel::Serializer::Adapter.register(name, klass) # adds an adapter to the adapter_map
ActiveModel::Serializer::Adapter.get(name_or_klass) # raises Argument error when adapter not found
```
- Automatically register adapters when subclassing
```ruby
def self.inherited(subclass)
ActiveModel::Serializer::Adapter.register(subclass.to_s.demodulize, subclass)
end
```
- Preserves subclass method `::adapter_class(adapter)`
```ruby
def self.adapter_class(adapter)
ActiveModel::Serializer::Adapter.get(adapter)
end
```
- Serializer.adapter now uses `Adapter.get(config.adapter)` rather than have duplicate logic
2015-09-08 22:59:36 -05:00
Lucas Hosseini
f27f13ccc1
Fix style.
2015-09-06 19:29:51 +02:00
Lucas Hosseini
070a2e63bd
Merge remote-tracking branch 'upstream/master' into fix-jsonapi-ri
2015-09-06 17:21:43 +02:00
Benjamin Fleischer
228cc1c92a
Rubocop: Consistent spacing
2015-09-03 20:51:40 -05:00
Benjamin Fleischer
bdfe13c527
Style/StringLiterals single quote all the things
2015-09-03 20:50:45 -05:00
João Moura
6784866a2d
Merge pull request #1079 from bf4/all_serializer_have_object
...
Add ArraySerializer#object like Serializer
2015-09-03 01:43:14 -03:00
Lucas Hosseini
3793f3ff4b
Rename resource_objects_for to primary_data_for.
2015-09-02 19:27:40 +02:00
Lucas Hosseini
f8c553a0ed
Cleanup.
2015-09-02 15:58:31 +02:00
Lucas Hosseini
a8a0566d29
Refactor relationships_for.
2015-09-01 21:16:00 +02:00
Lucas Hosseini
c593adbcb2
Further cleanup add_included.
2015-09-01 20:46:18 +02:00
Lucas Hosseini
bae4951e05
Further cleanup included_for.
2015-09-01 20:30:38 +02:00
Lucas Hosseini
91c5cbe0b9
Cleanup add_included.
2015-09-01 17:57:30 +02:00
Lucas Hosseini
f7612f2542
Further refactor/streamline method names.
2015-09-01 16:52:43 +02:00
Lucas Hosseini
04012052a6
Fix 'id' -> :id.
2015-09-01 15:39:29 +02:00
Lucas Hosseini
c4faafdebc
Refactor resource_identifier.
2015-09-01 10:15:50 +02:00
Lucas Hosseini
d9c680599a
Refactor.
2015-09-01 01:41:29 +02:00
Benjamin Fleischer
9673b6471c
Better lint
...
Extracted from
https://github.com/rails-api/active_model_serializers/pull/1004/files#diff-56455571c4ba7a2b4c640b9e8168f522R40
Correct cache_key lint for ActiveRecord 4.1+
https://github.com/rails/rails/blob/4-0-stable/activerecord/lib/active_record/integration.rb
def cache_key
https://github.com/rails/rails/blob/4-1-stable/activerecord/lib/active_record/integration.rb
def cache_key(*timestamp_names)
2015-08-31 00:22:17 -05:00
Benjamin Fleischer
005f71e2c2
Add ActiveModelSerializers.logger with default null device
2015-08-30 23:26:31 -05:00
Lucas Hosseini
343f8b96bd
Fix bug preventing id overriding.
2015-08-31 06:25:20 +02:00
Lucas Hosseini
f95f7369f0
Refactor add_resource_relationship.
2015-08-31 03:24:03 +02:00
Lucas Hosseini
8482abfac7
Move id and json_api_type methods from Serializer to JsonApi.
2015-08-31 02:32:38 +02:00
Lucas Hosseini
c5446d759f
Remove traces of embed option.
2015-08-31 01:26:22 +02:00
João Moura
64168cbecd
Merge pull request #1081 from beauby/jsonapi-singular-plural-config
...
Add configuration option to set resource type to singular/plural
2015-08-28 07:47:55 -03:00
Benjamin Fleischer
d315151e8a
Fix warnings
...
JRuby-specific: fix 'warning: (...) interpreted as grouped expression'
2015-08-26 09:22:02 -05:00
Lucas Hosseini
91235ba7bc
Add configuration option to set resource type to singular/plural with jsonapi.
2015-08-24 22:55:22 +02:00
Benjamin Fleischer
dc4ee94fea
Add ArraySerializer#object like Serializer
2015-08-24 13:51:46 -05:00
João Moura
87c47f8fdc
Merge pull request #1041 from bacarini/master
...
Adding pagination links
2015-08-22 13:38:32 -03:00
João Moura
fc7b9c3c14
Merge pull request #1063 from bf4/poro_lint
...
Lead by example: lint PORO model
2015-08-20 03:53:11 -03:00
Bruno Bacarini
3c3578a9b8
improvements on how to get self link on pagination class
2015-08-19 11:16:53 -03:00
Bruno Bacarini
01eab3bdb4
send whole request context to model serializer
2015-08-19 10:48:48 -03:00
Bruno Bacarini
2c2f948fa0
Add pagination links automatically
...
Pagination links will be included in your response automatically as long
as the resource is paginated using Kaminari or WillPaginate
and if you are using a JSON-API adapter. The others adapters does not have this feature.
2015-08-18 19:04:04 -03:00
Bruno Bacarini
a41d90cce4
add self to pagination links
2015-08-18 19:04:04 -03:00
Bruno Bacarini
59ae84baba
exchange to a faster regex to get origina_url
2015-08-18 19:04:03 -03:00
Bruno Bacarini
77a8f66ad8
fix message on raise of pagination links class
2015-08-18 19:04:03 -03:00
Bruno Bacarini
e0d050d2af
remove resource and options attr_reader from array_serialize
2015-08-18 19:04:03 -03:00
Bruno Bacarini
7be25fef14
include query_parameters on pagination links as well
2015-08-18 19:04:03 -03:00
Bruno Bacarini
e62a7d6f34
return complete URIs on pagination links
2015-08-18 19:04:03 -03:00
Bruno Bacarini
1fe8b06986
exchange pagination class to inside json_api scope
2015-08-18 19:04:02 -03:00
Bruno Bacarini
b864302695
remove 'page object' on paginations links'
2015-08-18 19:04:02 -03:00
Bruno Bacarini
f7c77c1256
add feature to include pagination links in response
2015-08-18 19:04:02 -03:00
João Moura
e384b65f5d
Merge pull request #1048 from bf4/cleanup_meta_in_adapter
...
Let FlattenJson adapter decide it doesn't include meta
2015-08-18 16:23:03 -03:00
Benjamin Fleischer
98d009a000
Let FlattenJson adapter decide it doesn't include meta
2015-08-18 15:13:21 -04:00
Benjamin Fleischer
dca286b0ec
Lead by example: lint PORO model
2015-08-18 12:59:12 -04:00
Aaron Lerch
35c8f0d835
Update fragment cache to support namespaced objects
2015-08-17 17:12:30 -04:00
João Moura
b4949fbc2a
Merge pull request #1049 from bf4/fix_json_api_adapter_serialable_hash
...
Fix incorrect s/options = {}/options ||= {}
2015-08-12 11:08:39 -03:00
Benjamin Fleischer
43e09c03de
Fix incorrect s/options = {}/options ||= {}
...
Introduced in #965 , surfaced in #1041
2015-08-11 17:08:09 -05:00
Josh Lane
033ce8e88d
allow for a type attribute
...
* "namespace" json_api specific type method
2015-08-11 08:33:05 -07:00
Josh Lane
4af98852b8
fix warning
...
* don't overshadow serializer variable
2015-08-11 08:32:20 -07:00
Артём Большаков
424a053ee5
Disallow to define multiple associations at once
2015-07-31 19:15:56 +03:00
João Moura
728b8f980e
Merge pull request #1026 from jfelchner/patch-1
...
Bump Version Number to 0.10.0.rc2
2015-07-31 11:34:42 -03:00
Jeff Felchner
e468030cbf
Bump Version Number to 0.10.0.rc2
...
Due to the fact that users need to switch from the released version to `master` occasionally to pull in upstream bugfixes, it's important that this version number stays in sync with the released version.
2015-07-31 04:51:55 -05:00
Артём Большаков
2952a332e0
Associations refactoring
...
* Move all associations related code from Serializer class to Associations module
* Introduce Reflection class hierarchy
* Introduce Association class
* Rid off Serializer#each_association
* Introduce Serializer#associations enumerator
2015-07-30 11:20:29 +03:00
João Moura
6266b6a002
Merge pull request #1006 from bf4/inflector-testing
...
Fix adapter inflection bug for api -> API
2015-07-20 23:20:00 -04:00
Benjamin Fleischer
ed23a37de9
require rails/railtie before subclassing Rails::Railtie
2015-07-17 14:16:30 -05:00
Benjamin Fleischer
4359026c0e
Handle inflecting api to s/API/Api without side-effects
2015-07-17 14:09:13 -05:00
vyrak bunleang
1b09d0ec42
array serializer uses root option for json_key if available
2015-07-16 15:34:19 -06:00
Jiajia Wang
7faa5e8e2e
Bug fix for ArraySerializer json_key
...
When the resource is a zero result query,
i.e. post_comments = PostComment.where("1=0")
the json_key will become 'postcomments' rather than 'post_comments'.
Using 'underscore' instead of 'downcase' fixes the error.
2015-07-15 10:11:06 +10:00
João Moura
775737619a
Merge pull request #996 from bf4/serializer_lint
...
Add linter for serializable resource
2015-07-13 19:37:39 -04:00
Benjamin Fleischer
28174e297d
Add linter for serializable resource
2015-07-09 11:20:19 -05:00
Rodrigo Ra
df63b59512
Add key option to serializer associations
2015-07-05 19:47:58 -03:00
Hugo Almeida
f25071ca70
Fixes virtual value not being used
2015-06-29 10:48:12 +09:00
João Moura
d3649d5b4e
Renaming Error to NoSerializerError
2015-06-26 02:16:35 -03:00
Benjamin Fleischer
e5d1e40dbd
Handle special-case of Array serializer with unserializable elements
2015-06-26 02:16:34 -03:00
João Moura
189b79523c
fixing array rendering when elements doesn't have a serializer
2015-06-26 02:15:42 -03:00
Aaron Lerch
6892ca39c9
Default the generated cache key to use custom #strftime instead of raw #to_s to achieve more accurate precision
2015-06-25 23:40:18 -04:00
Benjamin Fleischer
2d24dded14
serializable_hash and as_json should take options = nil
...
per ActiveModel::Serialization#serializable_hash
96bb004fc6/activemodel/lib/active_model/serialization.rb
def serializable_hash(options = nil)
options ||= {}
Otherwise, passing in nil to `as_json` or `serializable_hash`
makes things blow up when passing nil into attributes
2015-06-24 11:46:29 -05:00
João Moura
e321cb366d
Getting root key from AR::Relation
2015-06-16 11:36:17 -03:00
João Moura
65e0d79195
pluralising root key when using arraySerializer
2015-06-15 15:59:01 -03:00
João Moura
d061b2e9f4
enabling flatten json as default adapter
2015-06-15 13:49:24 -03:00
João Moura
1ea5608e78
updating tests to match new adapters structure
2015-06-15 13:39:36 -03:00
João Moura
2e46507971
avoiding nil cases when dynamically creating a class
2015-06-15 02:50:06 -03:00
João Moura
8e1214b4c5
force to use flattenJson when dealing with ArraySerializer
2015-06-15 02:48:39 -03:00
João Moura
b2f1947d4a
removing unseless root method
2015-06-14 17:24:48 -03:00
João Moura
2bf91a0c0e
updating adapters to follow new root logic
2015-06-14 03:25:20 -03:00
João Moura
a0753cb0bc
autoloading new flatten son adapter
2015-06-14 03:25:00 -03:00
João Moura
1c3a180a20
disable root as flag option
2015-06-13 15:48:33 -03:00
João Moura
c8fcb60a5d
addung fragment_cache method to Adapter::Json
2015-06-13 15:48:33 -03:00
João Moura
5932da64ef
creating flatten_json adapter
2015-06-13 15:48:33 -03:00
João Moura
37114e9d5b
removing unnecessary root parameter on fragment cache
2015-06-13 15:48:33 -03:00
João Moura
6251b90d25
Merge pull request #902 from cristianbica/serializer_file_digest
...
Added serializer file digest to the cache_key
2015-06-12 18:56:43 -03:00
Santiago Pastorino
4752e6723a
Make resource generator invoke serializer generator
2015-06-10 20:45:33 -03:00
Chris Branson
d34bba07b9
Ensure the adapters honor a custom root option and include meta when required
2015-06-04 17:33:41 +01:00
João Moura
a40df8fd3d
reverting PR #909 and adding json api usage advise on readme
2015-05-27 18:35:00 -03:00
João Moura
12adb2e6d4
Merge pull request #924 from navinpeiris/fragment-cache
...
Avoid unecessary calls to attribute methods when fragment caching
2015-05-27 14:55:31 -03:00
Navin Peiris
e0947fcbd4
Fixing issue where fragment cache calls attribute methods multiple times, even when they are supposed to be cached
2015-05-22 00:40:22 +05:30
Benedikt Deicke
4f576a1463
Adjusts JsonApi adapter to serialize relationships in a nested relationships hash
2015-05-21 16:35:35 +02:00
Benedikt Deicke
ca41901fb8
Adjusts JsonApi adapter to serialize attributes in a nested attributes hash
2015-05-21 16:23:01 +02:00
Guillermo Iguaran
f7fb4dbb98
Merge pull request #909 from joaomdmoura/json-api-default
...
Defining Json-API Adapter as Default
2015-05-20 20:50:19 -05:00
groyoh
a794a06fa5
Fixed #911
2015-05-17 22:47:44 +02:00
João Moura
2c9c36e21f
adding json_api as default adapter
2015-05-10 03:58:18 -03:00
Cristian Bica
7a62d31777
Added serializer file digest to the cache_key
...
Fixes #901
2015-05-06 08:37:18 +03:00
groyoh
5dcdfaaef3
Fixed a bug that appeared when json adapter serialize a nil association
2015-04-28 22:20:21 +02:00
Alexandre de Oliveira
1577969cb7
Bumps to 0.10.0.rc1
2015-04-22 03:06:06 -03:00
Alexandre de Oliveira
168c36fc7d
Merge pull request #810 from joaomdmoura/fragment-cache
...
Adding Fragment Cache to AMS
2015-04-21 17:57:55 -03:00
João Moura
792fb8a905
Adding Fragment Cache to AMS
...
It's an upgrade based on the new Cache implementation #693 .
It allows to use the Rails conventions to cache
specific attributes or associations.
It's based on the Cache Composition implementation.
2015-04-05 18:19:57 -03:00
Yohan Robert
6a0564a241
Fixed a bug that appears when a nil association is included
2015-04-03 12:50:05 +02:00
Mateo Murphy
9aebc6cb11
Fix bugs with included resources
...
Make sure they're cached along with the including resource and remove duplicates
2015-03-24 20:07:25 -04:00
Mateo Murphy
90c7005c79
Don't store the root as we don't need it elsewhere
2015-03-23 12:38:15 -04:00
Mateo Murphy
294d06624f
Remove unused embed option
2015-03-22 20:43:56 -04:00
Mateo Murphy
33f3a88ba0
Implement included and id and type as per spec
2015-03-22 20:43:56 -04:00
Mateo Murphy
d82c599c68
Always use plural for linked types
...
Although spec is agnostic about inflection rules, examples given are plural
2015-03-22 20:43:11 -04:00
Mateo Murphy
0f55f21266
Update format of links
2015-03-22 20:41:20 -04:00
Mateo Murphy
83c2854094
Rename add_linked to add_included
...
Better reflect generated output
2015-03-22 20:38:30 -04:00
Mateo Murphy
da86747a3e
Use symbol for root in jsonapi, fix tests
2015-03-22 20:38:29 -04:00
Mateo Murphy
3ba4386bda
Root is always "data" for jsonapi
2015-03-22 20:37:25 -04:00
Alexandre de Oliveira
bcd3844e58
Stores passed in options in array serializers
...
This is supported in single serializers. This adds support for passing
options from array serializers to each serializer in it.
2015-03-11 16:14:09 -03:00
Robbie Pitts
ad5677c4ec
Make json api adapter 'include' option accept an array, accommodate comma delimited string for legacy reasons
2015-03-11 10:01:44 -04:00
Joao Moura
8a432ad2b3
Adding cache support to version 0.10.0
...
It's a new implementation of cache based on ActiveSupport::Cache.
The implementation abstracts the cache in Adapter class on a
private method called cached_object, this method is intended
to be used on Adapters inside serializable_hash method in order
to cache each instance of the object that will be returned by
the serializer.
Some of its features are:
- A different syntax. (no longer need the cache_key method).
- An options argument that have the same arguments of ActiveSupport::Cache::Store, plus a key option that will be the prefix of the object cache on a pattern "#{key}-#{object.id}".
- It cache the objects individually and not the whole Serializer return, re-using it in different requests (as a show and a index method for example.)
2015-02-02 14:53:34 -02:00
Nicolás Hock Isaza
1d7d9fd6aa
Fix nested include attributes
...
When the requests asked for a nested attribute in the `include` and it's
missing or empty, don't break because the type of the object can't be
determined.
If the request is for a collection and none of the elements has the
attribute, it will not be added to the `linked` key, similar to what
happens with simple includes.
2015-01-13 14:49:58 -05:00
Robbie Pitts
90023b1af7
Make linked resource type names consistent with root names
2015-01-11 14:24:01 -05:00
Alexandre de Oliveira
6eb75af96b
Merge pull request #696 from ggordon/explicit_serializer
...
Explicitly set serializer for associations
2015-01-06 09:57:07 -02:00
Alexandre de Oliveira
87f817943a
Merge pull request #700 from arenoir/sparse_fieldsets
...
sparse fieldsets
2015-01-06 09:38:51 -02:00
Alexandre de Oliveira
bd27da1b76
Adds support for meta attribute
...
Currently, 0.10.0.pre doesn't support `meta` option in `render`. This
way, there's no way to support features such as pagination. `0.9` had
this feature in place.
This adds support for it, as well as fixes small things in README.md.
This won't support `meta` in array responses because arrays don't have
keys, obviously. Also, the response should have a `root` key, otherwise
no `meta` will be included.
In some cases, for example using JsonApi, ArraySerializer will result in
a response with a `root`. In that case, `meta` will be included.
2015-01-05 02:56:33 -02:00
Aaron Renoir
2ed52f96a6
merge upstream update fieldset
2014-11-13 17:45:47 -08:00
Alexandre de Oliveira
2f5626d616
Fixes nested has_many links in JSONAPI
...
When linked resource had has_many links, all of them would use the
association from the first resource, causing all of the items to build
`links` with the same associations.
This fixes it by iterating over the serializers, not just the
attributes array.
2014-11-13 16:38:47 -02:00
Gary Gordon
5560b49098
Allow overriding the adapter with render option
...
Make it easy to use multiple adapters in an app.
use "adapter: false" to not use ams
make a test override config.adapter
2014-11-13 10:23:19 -05:00
Gary Gordon
9f9715801a
Explicitly set serializer for associations
...
Document specifying serializer for assocaition
2014-11-13 10:17:59 -05:00
Alexandre de Oliveira
ac37570bff
Merge pull request #728 from rails-api/linked-resources-use-type-as-key
...
Use type as key for linked resources
2014-11-13 10:53:59 -02:00
Alexandre de Oliveira
4af02021ac
Merge pull request #703 from ggordon/specify_serializer_from_controller
...
Support serializer and each_serializer options in renderer
2014-11-12 20:09:51 -02:00
Alexandre de Oliveira
7333f20285
Use type as key for linked resources
...
If type is `author` but the association is called `writer`, the linked
resource key should be called `authors`, e.g
{
...
linked: {
authors: [{
...
}]
}
...
}
2014-11-12 20:03:25 -02:00
Alexandre de Oliveira
91b3fba509
Includes links inside of linked resources
...
According to
http://jsonapi.org/format/#document-structure-resource-objects ,
> Resource objects have the same internal structure, regardless of
> whether they represent primary or linked resources.
And then
http://jsonapi.org/format/#document-structure-resource-object-attributes ,
> There are four reserved keys in resource objects:
>
> "id"
> "type"
> "href"
> "links"
This commits includes `links` inside of linked resources.
2014-11-12 15:44:54 -02:00
Alexandre de Oliveira
971f501e55
Bugfix: include nested has_many association
...
Currently, doing `include: author.bio` would work correctly, but not for
has_many associations such as `include: author.roles`. This fixes it.
The problem was basically that we were not handling arrays for has_many linked,
as happens for ArraySerializers.
2014-11-11 14:35:00 -02:00
Gary Gordon
d97b2f5005
Fix infinite recursion
...
The method for testing whether to include an association was causing
an infinite loop when two models referenced each other.
2014-11-07 10:03:31 -05:00
Aaron Renoir
fc1562c04a
add fields to adapter initialize function, pull in master, add tests using includes with fields
2014-11-05 18:10:37 -08:00
Aaron Renoir
c9c58e31e5
merge upstream/master
2014-11-05 16:47:15 -08:00
Gary Gordon
c84430cdad
Support serializer and each_serializer in render json
2014-11-05 15:10:14 -05:00
Alexandre de Oliveira
95d122046d
Merge pull request #692 from ggordon/linked_for_jsonapi_collection
...
Include 'linked' member for json-api collections
2014-11-04 21:59:15 -02:00
Guillermo Iguaran
f5411f045f
Define as_json instead of to_json
2014-11-03 17:38:58 -05:00
Gary Gordon
d5bae0c2f0
Include 'linked' member for json-api collections
...
The options passed to the render are partitioned into adapter options
and serializer options. 'include' and 'root' are sent to the adapter,
not sure what options would go directly to serializer, but leaving this
in until I understand that better.
2014-11-03 17:13:55 -05:00
Guillermo Iguaran
3bba334cf8
JSON-API: Don't include linked section if associations are empty
2014-10-31 14:30:59 -05:00
Guillermo Iguaran
2d21a8e83f
Add type when association name is different than objects type
2014-10-31 01:54:13 -05:00
Guillermo Iguaran
19ac139880
Handle correctly null associations
...
null belongs_to associations are now serialized as nil instead
of raise an error during serialization.
2014-10-30 09:35:05 -05:00
Alexandre de Oliveira
baf3db1365
Merge pull request #691 from jacob-s-son/fix-embed-option-for-associations
...
Fix embed option for associations
2014-10-29 18:41:59 -02:00
Aaron Renoir
be54e0bc4f
remove serializer dependency from fieldset
2014-10-27 15:24:19 -07:00
Aaron Renoir
39bee48ae6
implement sparse fieldsets http://jsonapi.org/format/#fetching-sparse-fieldsets
2014-10-26 13:04:14 -07:00
Edgars Jekabsons
f9b7c74235
Renamed embed test to have "test" suffix
...
Fixed reference to association options
2014-10-22 15:30:44 +03:00
Guillermo Iguaran
5f198667be
Fix support for custom root in JSON-API adapter
2014-10-22 04:01:12 -03:00
Guillermo Iguaran
7c030314cb
Serialize ids as strings in JSON-API adapter
2014-10-15 18:56:49 -05:00
Guillermo Iguaran
557b56a50e
Refactor adapters to implement support for array serialization
2014-10-15 17:35:50 -05:00
Guillermo Iguaran
3fa1116035
Include root by default in JSON-API serializers
2014-10-14 11:33:06 -05:00
Steve Klabnik
410eacc30e
Merge pull request #677 from ride/embed-ids-option
...
Add support for embed: :ids option for in associations
2014-10-14 11:39:09 -04:00
NullVoxPopuli
7338b62b02
add support for root keys
...
remove debugging gem
fix white space
2014-10-13 13:27:09 -04:00
Guillermo Iguaran
188336522f
Add support for embed: :ids option for in associations
2014-10-10 16:48:55 -05:00
Tema Bolshakov and Dmitry Myaskovskiy
71a43a432a
Pass options to associations
2014-08-29 20:16:11 +04:00
Tema Bolshakov and Dmitry Myaskovskiy
ff37b6260d
test for json adapter
2014-08-29 19:40:01 +04:00
Tema Bolshakov
e45e5a82b7
Remove 'Adapter' suffix from adapters since they are in Adapter:: namespace
2014-08-29 11:40:56 +04:00
Tema Bolshakov
6bb4501f67
JsonApi adapter: serialize association
2014-08-29 11:37:27 +04:00
Tema Bolshakov
6496b08464
rename simple adapter to json
2014-08-29 11:01:39 +04:00
Tema Bolshakov
3dd4928279
* Do not ingerit array serializer from Serializer
...
* Tests for ArraySerializer
2014-08-29 10:58:14 +04:00
Tema Bolshakov
85ff8123fd
Include Enumerable to ArraySerializer
2014-08-28 23:03:28 +04:00
Tema Bolshakov
c1fdfc1cdc
First try to implement ArraySerializer
2014-08-28 19:16:24 +04:00
Tema Bolshakov
1b718b6d48
fix spelling
2014-08-28 18:56:22 +04:00
Tema Bolshakov
597765e3b0
start implementing json_api adapter to understand how associations should work
2014-08-28 18:55:27 +04:00
Tema Bolshakov
466c7d5dd8
Wrap association into Serializers
2014-08-28 18:46:19 +04:00
Tema Bolshakov
b1f7a5ccda
Move Adapter.adapter_for to Serializer.adapter
2014-08-27 11:02:39 +04:00
Tema Bolshakov
a6f9dae560
Concrete adapter should provide serializable hash for Adapter#to_json method
2014-08-27 09:33:14 +04:00
Tema Bolshakov
7b7d4d8907
Test for SimpleAdapter#serializable_hash
2014-08-27 09:15:07 +04:00
Tema Bolshakov
553c470e10
Serializer should be available wiithing adapter to inspect attributes and assotions
2014-08-27 09:09:01 +04:00
Tema Bolshakov
6cc4fa0258
* Configure adapter using ActiveModel::Serializer.config.adapter
...
* Get adapter instance using ActiveModel::Serializer::Adapter.adapter_for(serializer)
2014-08-27 09:05:28 +04:00
Tema Bolshakov
56725b45a6
Add NullAdapater
2014-08-27 08:41:45 +04:00
Tema Bolshakov
f00fe5595d
* Rename NullAdapter to SimpleAdapter
...
* Introduce abstract Adapter class
* Organaze test structure to match convemtions
2014-08-27 08:21:08 +04:00
Tema Bolshakov
d39a3e0aec
serializer_for Array
2014-08-26 12:50:47 +04:00
Steve Klabnik
86fc7d7227
bump version to 0.10.0.pre
2014-08-22 17:02:05 -04:00
Steve Klabnik
886ada9151
don't hold on to serializer
...
this is an optimization for now, this may have to change later.
2014-07-09 23:05:41 -04:00
Steve Klabnik
970b542549
Implement basic rendering
...
Woo actioncontroller
2014-07-09 17:52:31 -04:00
Steve Klabnik
1ea83c8bee
Implement a NullAdapter.
...
This adapter basically doesn't do anything, and just serializes
the attributes into plain old JSON.
2014-07-09 16:51:30 -04:00
Steve Klabnik
729a823868
Getting started: attributes.
...
Super super basic collection of attributes. Nothing fancy.
2014-07-09 16:16:39 -04:00