Santiago Pastorino
80d9fb56d2
Merge pull request #452 from plexus/has_one_each_serializer_fix
...
Using a HasOne association twice raises an exception (Undefined method `map')
2013-12-16 17:49:26 -08:00
Adrian Mugnolo and Santiago Pastorino
700e6b83c1
Serializers now inherit root
2013-12-16 17:55:50 -02:00
Adrian Mugnolo and Santiago Pastorino
115de49004
Remove explicit reference to self
2013-12-16 17:27:49 -02:00
Santiago Pastorino
adee76181f
Merge pull request #468 from stas/attrs_and_assoc_inheritance
...
Serializers now inherit attributes and associations.
2013-12-16 11:14:16 -08:00
Santiago Pastorino
5c00ce0443
Merge pull request #451 from plexus/embed_in_root_merge
...
embed_in_root only returns the associated objects of a single instance
2013-12-16 10:39:53 -08:00
Stas SUȘCOV
0febd8f628
Serializers now inherit attributes and associations.
2013-12-11 17:59:32 +02:00
Jason Truluck
a110df6caf
Add @options back into serializers to maintain the functionality of render :json as noted in the docs
...
This functionality used to exist in v0.8.1. This adds the ability to
pass other options that will be usable in the serializer via the
options accessor.
This works by adding an attr_accessor for options so it is available
and is set by the remaining options in the provided options hash during
initialization.
2013-11-12 12:57:31 -05:00
Arne Brasseur
8c3866532a
Fixes a bug in the HasOne association where serializing twice in a row causes
...
an exception.
2013-11-11 15:30:46 +01:00
Arne Brasseur
1db96ec7a9
When using embed: :ids ; embed_in_root: true, and serializing multiple objects,
...
only the associated objects of the last object in the collection will actually
show up in the serialized data.
For example, if you serialize a collection of two posts, each containing one or
more comments, only the comments of the last post show up. The reason is a
Hash#merge wich overwrites the array rather than appending to it.
This commit fixes this by merging the collection arrays, rather than the top-level
hashes.
2013-11-11 14:30:34 +01:00
Todd Bealmear
e0a564aa68
Fixed Rails 3 compatibility.
2013-11-04 17:45:36 -08:00
Todd Bealmear
f10f72c763
Fixed Rails 4 Controller Scaffold Generator.
2013-11-04 17:31:19 -08:00
Santiago Pastorino
99677c0c58
Pass scope through to associations via @lastobelus
...
Closes #433
2013-11-04 10:48:19 -02:00
Santiago Pastorino
60b5901af8
Don't treat has_one associations embed objects as an array
...
Closes #442
Thanks @arrtchiu for reporing and giving a test case
2013-11-04 10:09:29 -02:00
Santiago Pastorino
ef1ec65ae7
Make DefaultSerializer include AM::Serializable so embedded_in_root_associations is always defined also there
2013-11-01 22:35:56 -02:00
Santiago Pastorino
882dbafa7e
embedded_in_root_associations is always defined
2013-11-01 21:37:49 -02:00
Santiago Pastorino
66f9256534
Embed objects should return singular and not wrap in array
...
Closes #437
2013-11-01 14:22:52 -02:00
Santiago Pastorino
d3d6c98148
Make ArraySerializer reuse Serializer embedded_in_root_associations code
2013-10-31 17:28:39 -02:00
Santiago Pastorino
5598bb0f79
Make Associations in root work with ArraySerializer
...
Closes #414
2013-10-31 17:27:36 -02:00
Santiago Pastorino
85a9c185ca
Move responsibility of setting a serializer class and building a serializer for an association to the association class
2013-10-31 16:45:00 -02:00
Santiago Pastorino
616938dc63
Improve build_json_serializer readability a bit
2013-10-30 23:37:36 -02:00
Santiago Pastorino
4d4b820cbe
has_one returns arrays with roots pluralized
2013-10-30 15:26:13 -02:00
Santiago Pastorino
1eea008336
Split root construction and serialization logic
2013-10-29 19:39:27 -02:00
Santiago Pastorino
49ab359a34
Support passing a custom ArraySerializer for has_many associations
...
Thanks @phoet
Closes #316
2013-10-29 00:26:45 -02:00
Santiago Pastorino
d5308b4d0b
Remove old unneeded code
2013-10-26 03:01:17 -02:00
Santiago Pastorino
1eb09476ef
Revert "Merge pull request #422 from marclove/reduce-serializer-code-complexity"
...
This reverts commit 449849516b , reversing
changes made to e103569c22 .
Conflicts:
lib/active_model/serializer.rb
2013-10-26 01:19:15 -02:00
Arthur Neves
303ac21428
Small refactoring
2013-10-25 19:58:06 -04:00
Marc Love
5ac6e626b5
Reduce complexity and duplication; make accessor definition more explicit
2013-10-25 15:33:24 -07:00
Santiago Pastorino
439643ba5a
Fix the stupid previous commit
2013-10-24 19:23:50 -02:00
Santiago Pastorino
b44e1af5dd
Move synchronize to setup method and make CONFIG private
2013-10-24 17:42:20 -02:00
Santiago Pastorino
dc33dac56b
This is not being used
2013-10-24 16:57:42 -02:00
Santiago Pastorino
dfdc292e35
Align =
2013-10-24 16:32:18 -02:00
Arthur Neves
860acad9af
s/side_load/embed_in_root
2013-10-24 14:12:02 -04:00
Santiago Pastorino
2b70503896
Add ActiveModel::SerializerSupport
2013-10-24 16:09:00 -02:00
Santiago Pastorino
cef6f85f44
Deprecate include in favor of side_load
2013-10-24 15:09:26 -02:00
Santiago Pastorino
48db253765
embed_in_root is now side_load
2013-10-24 14:57:41 -02:00
Santiago Pastorino
5c6541145a
Allow to embed nothing but still side loading
...
Closes #361 , #399 , #401
2013-10-24 13:24:49 -02:00
Santiago Pastorino
df5ef33ae6
Allow to turn off ams
...
Closes #378
You can define now
```
def default_serializer_options
{ serializer: false }
end
```
2013-10-23 20:34:34 -02:00
Łukasz Strzałkowski
d46584af40
Wrap config's data hash in mutex
2013-10-21 20:27:01 +00:00
Arthur Neves
05ec509e1c
Use ActiveSupport::Deprecation.warn instead of warn
2013-10-21 15:02:39 -04:00
Santiago Pastorino
7dcef9f0f5
Rename Settings to Config and use accessors to configure things
2013-10-21 16:23:35 -02:00
Arthur Neves
84801301b9
Add deprecation message to .embed method
2013-10-21 13:08:07 -04:00
Arthur Neves
41f1855056
Add accessors to settings class
2013-10-21 13:05:39 -04:00
Santiago Pastorino
4ab16381bd
Bump version to 0.9.0.pre
2013-10-18 17:49:22 -02:00
Santiago Pastorino
73774649e3
Implement Generators
2013-10-18 17:49:21 -02:00
Santiago Pastorino
91f9317713
There's no need to define read_attribute_for_serialization in the Serializer class
2013-10-18 17:49:21 -02:00
Santiago Pastorino
b9a6dfac2f
Do not call send on associated objects, do it through elem.read_attribute_for_serialization
2013-10-18 17:49:21 -02:00
Santiago Pastorino
4b91d0e5ec
embed :objects is the default
...
A commit with an integration test that covers this functionality is
coming after this one
2013-10-18 17:49:20 -02:00
Santiago Pastorino
4f70dc2091
has_one serialized objects shouldn't be wrapped in an array and it's key is singular
2013-10-18 17:49:20 -02:00
Santiago Pastorino
dbf512c14c
Make embed nil ids work
2013-10-18 17:49:20 -02:00
Santiago Pastorino
cad8fafa60
Optimize serializer_for for Ruby >= 2.0
2013-10-18 17:49:20 -02:00
Santiago Pastorino
841f3b8181
Add filter to allow users implement filter method to include/exclude attributes and relations
2013-10-18 17:49:20 -02:00
Santiago Pastorino
f6ea07dd22
Do not convert attrs to String until needed
2013-10-18 17:49:20 -02:00
Santiago Pastorino
daa9304398
Do not convert root and meta_key to Strings
2013-10-18 17:49:20 -02:00
Santiago Pastorino
75e9a2599d
Store attributes as they are instead of converting them into Strings
2013-10-18 17:49:20 -02:00
Santiago Pastorino
10e882a14f
Allow to set embed options from AM::Serializer
2013-10-18 17:49:20 -02:00
Santiago Pastorino
aa23e811cc
Use controller name as root when serializing an array and not root is defined
2013-10-18 17:49:20 -02:00
Santiago Pastorino
86b9d5a226
Avoid work inside serializable_array
2013-10-18 17:49:20 -02:00
Santiago Pastorino
8006529e20
Allow ArraySerializer to pass the options down to item serializers
2013-10-18 17:49:19 -02:00
Santiago Pastorino
6f3503c965
Use serializer name as root when root not set
2013-10-18 17:49:19 -02:00
Santiago Pastorino
626a85bc3e
Allow using root = false in initialize
2013-10-18 17:49:19 -02:00
Santiago Pastorino
8462a73f3a
Make render json work when not using AMS
2013-10-18 17:49:19 -02:00
Santiago Pastorino
7405baafd7
Serialize associations that doesn't have an associated serializer
2013-10-18 17:49:19 -02:00
Santiago Pastorino
513e7f2166
Add setup method and Setting object to configure AMS
2013-10-18 17:49:19 -02:00
Santiago Pastorino
29148cbe1c
Add AC::Serialization#serialization_scope as a class level method
2013-10-18 17:49:19 -02:00
Santiago Pastorino
0e0341effc
Implement embed in root
2013-10-18 17:49:19 -02:00
Santiago Pastorino
af34adc7b5
Move key's initialization code to initializers
2013-10-18 17:49:19 -02:00
Santiago Pastorino
280fd65db8
Allow to set key for associations through options
2013-10-18 17:49:19 -02:00
Santiago Pastorino
48590a2e37
Allow to set root for associations through options
2013-10-18 17:49:19 -02:00
Santiago Pastorino
8a495b1d00
Embedded has_one returns an array with the key pluralized
2013-10-18 17:49:19 -02:00
Santiago Pastorino
3fcd8c5f98
Define root and root= as aliases of _root=
2013-10-18 17:49:18 -02:00
Santiago Pastorino
7ba05c02e3
Make Serializable module which implements as_json
2013-10-18 17:49:18 -02:00
Santiago Pastorino
e6993c677b
Add missing requires
2013-10-18 17:49:18 -02:00
Santiago Pastorino
a820e9774f
Add ArraySerializer's root and meta features
2013-10-18 17:49:18 -02:00
Santiago Pastorino
70ea6c6bc7
Add has_one and has_many :serialize => tests
2013-10-18 17:49:18 -02:00
Santiago Pastorino
f647b7ae74
Implement each_serializer
2013-10-18 17:49:18 -02:00
Santiago Pastorino
7e83f0c29d
Implement ArraySerializer
2013-10-18 17:49:18 -02:00
Santiago Pastorino
61a1669a86
Implement has_many
2013-10-18 17:49:18 -02:00
Santiago Pastorino
516f5bdceb
Implement has_one's embed ids include true
2013-10-18 17:49:18 -02:00
Santiago Pastorino
52bb3f6929
Implement has_one's embed objects
2013-10-18 17:49:17 -02:00
Santiago Pastorino
d756ae4a70
Implement has_one's and serialize_ids
2013-10-18 17:49:17 -02:00
Santiago Pastorino
01bc534976
Remove SerializerSupport
2013-10-18 17:49:17 -02:00
Santiago Pastorino
0d4dfb69a9
Fix directories the project is on top level dir
2013-10-18 17:49:17 -02:00
Santiago Pastorino
0c91564101
Remove method redefined warning
2013-10-18 17:49:17 -02:00
Santiago Pastorino
9e75625b1f
Re-order properties
2013-10-18 17:49:17 -02:00
Santiago Pastorino
93baaa96b1
Implement meta and meta_key for AM::Serializer
2013-10-18 17:49:17 -02:00
Santiago Pastorino
af357619c1
Add AMS support to AR objects
2013-10-18 17:49:17 -02:00
Santiago Pastorino
0d3b56e9cf
Implement AC integration
2013-10-18 17:49:17 -02:00
Santiago Pastorino
d41e5ccef7
Implement SerializerSupport class
2013-10-18 17:49:17 -02:00
Santiago Pastorino
b6f9c5ee43
Implement Serializer's scope
2013-10-18 17:49:16 -02:00
Santiago Pastorino
c3f857d1b6
Implement Serializer's root
2013-10-18 17:49:16 -02:00
Santiago Pastorino
7143eb8301
Serialize just attributes
2013-10-18 17:49:16 -02:00
Santiago Pastorino
14f51f2ea9
Remove everything, rewrite of AMS starts here
2013-10-18 17:46:18 -02:00
Tee Parham
31e1dab69f
require rails >= 3.2
...
* remove ancient confusing comment in SerializerGenerator
2013-05-30 15:26:17 -06:00
Tee Parham
74ba9dc76c
upgrade hash syntax
2013-05-30 15:25:06 -06:00
Tee Parham
143e5d9866
do not generate id method (was for 1.8 only)
...
see https://github.com/rails-api/active_model_serializers/issues/127
for original motivation
2013-05-29 19:39:00 -06:00
Santiago Pastorino
c97acfd9ba
Always set a serializer for each item of an Array
...
model.active_model_serializer could return nil so we need to ensure that
if serializer is not setted we set DefaultSerializer to it.
This reverts commit 64ed05c484 .
Fixes #318
2013-05-28 18:13:07 -07:00
Santiago Pastorino
f68003f64d
Merge pull request #313 from geigerzaehler/fix_root
...
Don't wrap array items in root element
2013-05-24 14:49:41 -07:00
Santiago Pastorino
9521e912fe
serialize_ids call methods on the corresponding serializer if defined
2013-05-24 14:09:27 -07:00
Thomas Scholtes
258248d6c0
Don't wrap array items in root element
2013-05-24 10:23:59 +02:00
Santiago Pastorino
ee846f39af
Fix build in 1.8.7
2013-05-22 14:24:22 -07:00
Damian Galarza
bbc3ae44cc
Allow a controller to properly override scope_name
2013-05-21 21:24:50 -04:00
Santiago Pastorino
35608a8550
Move version.rb file to serializer directory
2013-05-21 17:03:09 -07:00
Santiago Pastorino
055f8fe33c
AMS::Associations::Base is now AMS::Association. HasMany and HasOne inherits from it.
2013-05-21 17:03:08 -07:00
Santiago Pastorino
787b7cf24a
Document Associations
2013-05-21 17:03:08 -07:00
Santiago Pastorino
0b6326eb35
Move polymorphic to initialize + reader
2013-05-21 17:03:08 -07:00
Santiago Pastorino
36feb5d44f
Refactor embeddable? method
2013-05-21 17:03:08 -07:00
Santiago Pastorino
bbd3c8b157
Define embeddable? as an alias of object
2013-05-21 17:03:08 -07:00
Santiago Pastorino
e295af2e2b
Move embed methods to initialize and define readers
2013-05-21 17:03:08 -07:00
Santiago Pastorino
cd9e106640
All the attr_readers together
2013-05-21 17:03:08 -07:00
Santiago Pastorino
1c3f14407c
There's no need for target_serializer method
2013-05-21 17:03:08 -07:00
Santiago Pastorino
feaefeeef3
Use name reader
2013-05-21 17:03:08 -07:00
Santiago Pastorino
296970415a
Move key method to the base class
2013-05-21 17:03:08 -07:00
Santiago Pastorino
ecbb8bf6a6
Use == || == instead of include?
2013-05-21 17:03:08 -07:00
Santiago Pastorino
eb5b27de69
Initialize things in the initialize method and define readers
2013-05-21 17:03:08 -07:00
Santiago Pastorino
ea6d712cc8
key method is defined on subclasses
2013-05-21 17:03:07 -07:00
Santiago Pastorino
2dd0090f13
Reorder methods
2013-05-21 17:03:07 -07:00
Santiago Pastorino
0b648fceac
Use private instead of protected, we don't use explicit receivers
2013-05-21 17:03:07 -07:00
Santiago Pastorino
f9e189e9d7
Rename associated_object to object
2013-05-21 17:03:07 -07:00
Santiago Pastorino
85bf3d2f3d
Move duplicated code to the Base class
2013-05-21 17:03:07 -07:00
Santiago Pastorino
03669a74bc
Associations::Config is now Associations::Base
2013-05-21 17:03:07 -07:00
Santiago Pastorino
2b22acff53
Use the readers instead of accessing the ivar directly
2013-05-21 17:03:07 -07:00
Santiago Pastorino
251fdc7ba4
Rename opts to klass_options
2013-05-21 17:03:07 -07:00
Santiago Pastorino
0b9f69529f
Add default_embed_options
2013-05-21 17:03:07 -07:00
Santiago Pastorino
e273a2fb37
Use a third argument to pass serializer_options
2013-05-21 17:03:07 -07:00
Santiago Pastorino
c04d452823
Associations doesn't depend on the source serializer anymore :)
2013-05-21 17:03:07 -07:00
Santiago Pastorino
c1e710aae1
Save result of calling associated_object in a local var
2013-05-21 17:03:06 -07:00
Santiago Pastorino
baa690a01a
Move if object to the top
2013-05-21 17:03:06 -07:00
Santiago Pastorino
0917148617
serialize_ids doesn't use source serializer and it's object
2013-05-21 17:03:06 -07:00
Santiago Pastorino
9f5e872621
Extract id_key to a method
2013-05-21 17:03:06 -07:00
Santiago Pastorino
a41de0286f
Passing options[:hash] is not public API of include!
2013-05-21 17:03:06 -07:00
Santiago Pastorino
ea3566955c
Remove option method just use the reader
2013-05-21 17:03:06 -07:00
Santiago Pastorino
5017fb686a
Associations doesn't depend on source serializer anymore
2013-05-21 17:03:06 -07:00
Santiago Pastorino
460a250984
Get rid of refine
2013-05-21 17:03:06 -07:00
Santiago Pastorino
1a8709d71c
Move caching to a new module
2013-05-21 17:03:06 -07:00
Santiago Pastorino
f179a27ed7
Add docs to serializable
2013-05-21 17:03:06 -07:00
Santiago Pastorino
aaa08c25ef
Make include_meta and meta_key private
2013-05-21 17:03:06 -07:00
Santiago Pastorino
76fead041f
Make Serializer reuse Serializable
2013-05-21 17:03:06 -07:00
Santiago Pastorino
0e876624ec
Move reusable code to a module
2013-05-21 17:03:05 -07:00
Santiago Pastorino
64ed05c484
Define serializer as DefaultSerializer if not set
2013-05-21 17:03:05 -07:00
Steve Klabnik
fe84e0ad52
version bump 0.8.1
2013-05-05 17:35:51 -07:00
Sam
597a2e3148
allow serializers to implement an options attribute
2013-05-06 10:30:46 +10:00
Steve Klabnik
a022d464f5
Bump to 0.8.0
2013-05-05 13:45:50 -07:00
Steve Klabnik
bb8900e308
Merge pull request #264 from vad4msiu/features/root_element
...
Support for setting root element
2013-05-05 12:02:27 -07:00
Steve Klabnik
cffdbce072
Merge pull request #283 from morgoth/add-only-and-except-options-support
...
Add only and except options support
2013-05-05 12:00:59 -07:00
Steve Klabnik
da779c259f
Merge pull request #293 from goshakkk/mongoid-support
...
add support of mongoid collection serialization
2013-05-05 12:00:04 -07:00
Gosha Arinich
1482081766
add support of mongoid collection serialization
2013-05-05 21:50:34 +03:00
Gosha Arinich
e8ae3e1bb3
allow singular embed when serializing association
...
Having
```ruby
has_one :post, embed: :ids
```
looks especially weird as it's a one-to-one association, hence there is
only one id. The following looks better:
```ruby
has_one :post, embed: :id
```
2013-05-05 11:02:42 +03:00
Gosha Arinich
7f75b15ddd
include serializer support into mongoid
2013-05-04 22:43:11 +03:00
Wojciech Wnętrzak
489ebf2132
Added support for :only and :except methods.
...
It is possible now to filter returned attributes and associations by:
UserSerializer.new(user, only: [:first_name, :last_name])
UserSerializer.new(user, except: :first_name)
2013-04-27 21:29:26 +02:00
Wojciech Wnętrzak
82f50ef81f
Unify way of calling include_attribute? in attibutes and association methods.
2013-04-20 23:28:33 +02:00