diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2018-02-09 15:23:05 -0500 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2018-02-14 13:10:07 -0500 |
commit | ea615332452e6860872020aa161c5d34e81f1eea (patch) | |
tree | 2ba5478b1e48b56f722aed17c3f6d2d5f9d1d7d9 /activejob/lib/active_job/serializers/object_serializer.rb | |
parent | 9bc8b4bbde4634e0e4bddcffa25e0bf8d74d19cd (diff) | |
download | rails-ea615332452e6860872020aa161c5d34e81f1eea.tar.gz rails-ea615332452e6860872020aa161c5d34e81f1eea.tar.bz2 rails-ea615332452e6860872020aa161c5d34e81f1eea.zip |
Only add one more custom key in the serialized hash
Now custom serialziers can register itself in the serialized hash using
the "_aj_serialized" key that constains the serializer name.
This way we can avoid poluting the hash with many reserved keys.
Diffstat (limited to 'activejob/lib/active_job/serializers/object_serializer.rb')
-rw-r--r-- | activejob/lib/active_job/serializers/object_serializer.rb | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/activejob/lib/active_job/serializers/object_serializer.rb b/activejob/lib/active_job/serializers/object_serializer.rb index 075360b26e..d5ff8c91f1 100644 --- a/activejob/lib/active_job/serializers/object_serializer.rb +++ b/activejob/lib/active_job/serializers/object_serializer.rb @@ -4,22 +4,12 @@ module ActiveJob module Serializers class ObjectSerializer < BaseSerializer class << self - def serialize(object) - { key => object.class.name } + def serialize(hash) + { OBJECT_SERIALIZER_KEY => self.name }.merge!(hash) end def deserialize?(argument) - argument.respond_to?(:keys) && argument.keys == keys - end - - def deserialize(hash) - hash[key].constantize - end - - private - - def keys - [key] + argument.is_a?(Hash) && argument[OBJECT_SERIALIZER_KEY] == self.name end end end |