Santiago Pastorino
513e7f2166
Add setup method and Setting object to configure AMS
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
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
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
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
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
74ba9dc76c
upgrade hash syntax
2013-05-30 15:25:06 -06:00
Santiago Pastorino
9521e912fe
serialize_ids call methods on the corresponding serializer if defined
2013-05-24 14:09:27 -07: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
055f8fe33c
AMS::Associations::Base is now AMS::Association. HasMany and HasOne inherits from it.
2013-05-21 17:03:08 -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
0917148617
serialize_ids doesn't use source serializer and it's object
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
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
76fead041f
Make Serializer reuse Serializable
2013-05-21 17:03:06 -07:00
Sam
597a2e3148
allow serializers to implement an options attribute
2013-05-06 10:30:46 +10: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
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
vanstee
a900d31041
Support strings as attribute names
...
When generating the `_fast_attributes` method, attribute names that
could not be represented as symbols (at least without escaping) would
throw parsing errors.
2013-04-09 00:53:56 -04:00
vad4msiu
95081410d2
Support for setting root element
2013-04-04 15:10:29 +04:00
Steve Klabnik
9551a97464
Revert 37b0690fb8.
...
This feature causes more problems than it solves.
2013-04-03 17:24:08 -07:00
Prathamesh Sonpatki
75a72b5cc9
Fixed few typos
2013-03-26 20:29:35 +05:30
Kevin Mahoney
2bd447d69d
Pass options through when using default serializer
2013-03-22 13:12:33 +00:00
beerlington
e4ad25073d
Adding doc for build_json method
2013-03-20 08:14:23 -04:00
beerlington
fd578fcf69
Refactor and consolidate serializer option setup
2013-03-19 22:21:41 -04:00
beerlington
4a13f86961
Reference scope by same name as serialization scope
...
By default, the serialization scope uses current_user, and you can
now reference the scope as "current_user" in the serializer. If you
override the scope using "serialization_scope" in your controller,
it will use that method name instead.
2013-03-18 14:44:38 -04:00
Sam
ad1d34b2c4
Fix inheritance issues, poison cache if attributes change
2013-03-16 03:45:06 -07:00
twinturbo
bd90af0e49
Remove commented code
2013-03-14 22:41:34 +01:00
twinturbo
b854d49298
Rebase against master
2013-03-14 22:40:46 +01:00
twinturbo
e3888f0a40
Clean up interface inconistency
2013-03-14 22:40:06 +01:00
twinturbo
535a33a33b
Have to opt in with #cache_key
2013-03-14 22:40:06 +01:00
twinturbo
e923174a26
#cache_key delegates to #object by default
2013-03-14 22:40:06 +01:00
twinturbo
b4395f281b
Add basic caching
2013-03-14 22:40:06 +01:00
Steve Klabnik
6408b73e3c
Merge pull request #233 from SamSaffron/fix
...
Optimised performance for attribute extraction
2013-03-14 14:22:27 -07:00
Sam
710c375088
remove safe guard per discussion with steveklabnik
2013-03-14 14:11:04 -07:00
Sam
08a182d743
per discussion remove instrumentation altogether
2013-03-13 22:18:40 -07:00
Sam
31ba6fbb08
Optimised performance for attribute extraction
...
Disabled all instrumentation unless enabled explicitly
2013-03-13 21:20:56 -07:00
Michael Rykov
37b0690fb8
Add a Responder to handle respond_with(resource)
2013-03-13 16:45:23 -07:00
Steve Klabnik
e76a16486f
Merge pull request #170 from FundingGates/master
...
Support optional types for computed attributes
2013-03-08 09:11:29 -08:00
Adam Stanton
da26ebd26f
Merge branch 'create-default-serializer' into HEAD
...
Conflicts:
lib/active_model/array_serializer.rb
2013-03-05 21:48:58 -08:00
Steve Klabnik
06c65871a8
Merge pull request #213 from michihuber/fix_rendering_nil_with_custom_serializer
...
Fix rendering nil with custom serializer
2013-03-05 15:54:51 -08:00
Steve Klabnik
d638e21c8c
Merge pull request #180 from fellix/fix-remove-root-globally
...
Fix global ``` self.root = false ```
2013-03-05 15:48:08 -08:00
Ismael Abreu
2d2094b588
changes to be able to specify multiple attributes with keys
2013-03-05 02:45:22 +00:00
Nicholas Mulder
fa51c5f574
Add ActiveSupport::DescendantsTracker to Serializer and ArraySerializer
2013-02-28 10:01:40 -05:00
Michi Huber
c7a420d295
Don't fail if object is nil, render null
2013-02-26 11:17:28 +01:00
Adam Stanton
c4fcf96eb4
Move DefaultSerializer from array_serializer.rb to serializer.rb
2013-02-10 09:49:11 -08:00
Rafael Felix
82951c1f8a
Fix global `` self.root = false ``
...
Using the on_load hook does not change the defined root on
Serializer#inherited.
Related to #179
2013-01-24 09:13:41 -02:00
Steve Klabnik
e3bfd07ac4
Merge pull request #161 from kevins90/fix_attr_name_as_serializer_underscored_prefix
...
Fix serialization of attribute whose name matches the serializer prefix underscored
2013-01-05 14:09:15 -08:00
Matt Rogish
25c564bd6f
Adding optional type for attributes
2012-12-10 19:58:58 -05:00
Steve Klabnik
6780cd3df5
Merge pull request #138 from tchak/meta
...
Meta object
2012-12-10 10:48:39 -08:00
Kevin Tham
14a35ab2f8
Remove unneeded method aliasing of attribute reader: object, with the underscored class name of serializer, to fix issue where a model's attribute name matches that of the underscored prefix of the serializer
2012-11-25 00:17:17 -08:00
Jo Liss
2fc083a1fe
Merge pull request #117 from joliss/computed-attributes
...
Make schema not crash on computed attributes & associations
2012-11-22 08:31:18 -08:00
tchak
a71698d5bb
Add support for meta key
...
Test for meta_key serialization
2012-11-22 13:44:59 +01:00
Samnang Chhun
96ce310595
Add alias_method ActiveModel::Serializer.root= to be consistency with ActiveModel::ArraySerializer
2012-11-20 00:29:00 +07:00
Jo Liss
538b0c0916
Make schema not crash on computed associations
...
We pick nil here as well.
2012-10-31 20:07:08 +01:00
Jo Liss
6281a9149e
Make schema not crash on computed attributes
...
We do not know the type for computed attributes, so we pick nil.
Perhaps at some point we might add a :type option for attributes (or
not), but in any case it's important to not crash when there are
computed attributes.
2012-10-31 20:07:08 +01:00
Jo Liss
c767d7f5e4
Remove newly-redundant OrderedSet
2012-10-29 23:15:39 +01:00
Jo Liss
ee3cec3d0c
When objects are sideloaded multiple times, serialize them only once
...
To achieve this, we make the following change when sideloading: Instead
of serializing associations and discarding duplicate *hashes*, we
memorize the *objects* (records) that we have already serialized, and
only serialize those that are new.
This change is mostly transparent, and brings down serialization time
from 3.1 seconds to 1.0 seconds on my set of sample data.
There is one change in the behavior: If you sideload the same object
multiple times, and it yields different hashes, like so:
embed :ids, include: true
has_many :comments
has_many :recent_comments, root: comments, serializer: CommentShortSerializer
then previously, it would be included multiple times, whereas now, the
first hash wins. (I haven't actually tested this.) I don't know that
either option is preferable. It's not covered by the test suite, and I
think it's an edge case that is OK to ignore entirely.
2012-10-29 23:15:32 +01:00
Jo Liss
6be6ed8326
Extract Associations module into separate file
2012-10-29 17:21:27 +01:00
Tee Parham
9584b9e147
move OrderedSet to separate file
2012-09-18 01:28:07 +02:00
Tee Parham
b8f01ba2f3
move ArraySerializer to separate file
2012-09-18 01:28:07 +02:00
Yehuda Katz
2130cdfc00
List out the event names to avoid garbage
2012-09-16 20:20:34 -07:00
Yehuda Katz
a025f1b6f6
Eliminate some String garbage
2012-09-16 20:08:30 -07:00
Dan Gebhardt
42221a6140
define include_XXX? methods, which can be overridden to conditionally include attributes and associations
2012-08-29 09:26:41 -04:00
Dan Gebhardt
68dc57eb73
simplified the API for include_associations!() to make conditional includes cleaner
2012-08-29 07:42:23 -04:00
twinturbo
38859d1f3d
Easier to work with polymorphic interface
2012-08-25 17:39:39 +02:00
Alex Kwiatkowski & Will Bagby
754aa295ba
Return empty hash when url_options not provided
2012-08-07 12:56:58 -04:00
Jo Liss
e8f2ecebfb
Use blocks instead of eval to define methods
2012-07-26 00:28:59 +02:00
Tee Parham
663d443884
Merge branch 'array-serializer-root' of github.com:teeparham/active_model_serializers into readme-arrays
2012-07-23 13:02:04 -06:00
Tee Parham
53da0b12fd
add docs for serializing arrays
2012-07-21 15:25:41 -07:00
José Valim
ef7d475912
Merge pull request #94 from teeparham/array-serializer-root
...
Add root option to ArraySerializer
2012-07-21 00:38:18 -07:00
José Valim
6f07a0297e
Merge pull request #97 from twinturbo/include-bug
...
Include Related Bugs
2012-07-21 00:36:04 -07:00
Chris Schmitz
a6473e70c4
Fix a couple typos.
2012-07-16 09:29:12 -05:00
twinturbo
6f3b250dc9
Don't include empty polymoprhic associations
...
Take this serializer:
class TodoSerializer < ActiveModel::Serializer
root :todo, :include => true
has_one :reference, :polymorphic => true
end
A nil reference would generate this JSON:
{
"todo": { "reference": null },
"nil_classes": []
}
This commit prevents the `nil_classes` key from being added when
serializing and including nil polymoprhic associations.
2012-07-16 15:08:01 +02:00
twinturbo
486d282922
Raise error when associations cannot be included
...
include! only works when the source serializer has a root set. The
as_json method sets up some state for the include! method. If a child
association has associations with `:include => true` or `root foo,
:include => true` would cause an undefined method error for `NilClass`.
This is entirely unhelpful for the end user.
This commit raise an error when this situation occurs. It makes it clear
that it's not a problem with AMS but the serialization graph.
2012-07-16 14:18:58 +02:00
twinturbo
f01fe14972
Fix spelling mistakes
2012-07-15 11:49:36 +02:00
twinturbo
9f20fe8b36
Test passes
2012-07-15 11:49:36 +02:00
twinturbo
7e96856b87
Support serialize polymorphic id
2012-07-15 11:49:36 +02:00
twinturbo
32f8779114
Basic rooted polymorphism
2012-07-15 11:49:36 +02:00
Tee Parham
0832e42917
add class attribute :root to ArraySerializer
...
You can now set the default behavior for Array serialization in a
single place
2012-07-14 21:44:23 -06:00