Skip to content

Commit 767d5ba

Browse files
committed
updating deserialization implementation to not use module but a new serialization class instead
1 parent 373875f commit 767d5ba

File tree

3 files changed

+11
-52
lines changed

3 files changed

+11
-52
lines changed

lib/active_model/deserializer.rb

Lines changed: 0 additions & 44 deletions
This file was deleted.

lib/active_model/serializer.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Serializer
1010

1111
class << self
1212
attr_accessor :_attributes
13-
attr_accessor :_deserialize
13+
attr_accessor :_params
1414
attr_accessor :_attributes_keys
1515
attr_accessor :_associations
1616
attr_accessor :_urls
@@ -27,15 +27,15 @@ def self.inherited(base)
2727
base._attributes = self._attributes.try(:dup) || []
2828
base._associations = self._associations.try(:dup) || {}
2929
base._attributes_keys = self._attributes_keys.try(:dup) || {}
30-
base._deserialize = self._attributes.try(:dup) || []
30+
base._params = self._attributes.try(:dup) || []
3131
base._urls = []
3232
serializer_file = File.open(caller.first[/^[^:]+/])
3333
base._cache_digest = Digest::MD5.hexdigest(serializer_file.read)
3434
end
3535

36-
def self.deserialize(*attrs)
37-
@_deserialize.concat attrs
38-
@_deserialize.uniq!
36+
def self.params(*attrs)
37+
@_params.concat attrs
38+
@_params.uniq!
3939
end
4040

4141
def self.attributes(*attrs)
@@ -156,6 +156,11 @@ def self.root_name
156156
name.demodulize.underscore.sub(/_serializer$/, '') if name
157157
end
158158

159+
def self.deserialize(params)
160+
object_class = root_name.split('_').first.camelize.constantize
161+
object_class.find_or_initialize_by(params)
162+
end
163+
159164
attr_accessor :object, :root, :meta, :meta_key, :scope
160165

161166
def initialize(object, options = {})
@@ -219,8 +224,7 @@ def each_association(&block)
219224
options.except(:serializer).merge(serializer_from_options(association_options))
220225
)
221226
rescue ActiveModel::Serializer::ArraySerializer::NoSerializerError
222-
virtual_value = association_value
223-
virtual_value = virtual_value.as_json if virtual_value.respond_to?(:as_json)
227+
virtual_value = association_value.as_json if association_value.respond_to?(:as_json)
224228
association_options[:association_options][:virtual_value] = virtual_value
225229
end
226230
elsif !association_value.nil? && !association_value.instance_of?(Object)

lib/active_model_serializers.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
require 'active_model/serializer'
44
require 'active_model/serializer/fieldset'
55
require 'active_model/serializer/railtie'
6-
require 'active_model/deserializer'
76

87
begin
98
require 'action_controller'

0 commit comments

Comments
 (0)