mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-24 06:46:50 +00:00
Merge pull request #681 from quainjn/inherited-serializer
Check superclasses for Serializers
This commit is contained in:
commit
341cca7d8a
@ -66,8 +66,7 @@ module ActiveModel
|
|||||||
if resource.respond_to?(:to_ary)
|
if resource.respond_to?(:to_ary)
|
||||||
config.array_serializer
|
config.array_serializer
|
||||||
else
|
else
|
||||||
serializer_class = "#{resource.class.name}Serializer"
|
get_serializer_for(resource.class)
|
||||||
serializer_class.safe_constantize
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -131,5 +130,19 @@ module ActiveModel
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def self.get_serializer_for(klass)
|
||||||
|
serializer_class_name = "#{klass.name}Serializer"
|
||||||
|
serializer_class = serializer_class_name.safe_constantize
|
||||||
|
|
||||||
|
if serializer_class
|
||||||
|
serializer_class
|
||||||
|
elsif klass.superclass
|
||||||
|
get_serializer_for(klass.superclass)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -27,8 +27,12 @@ module ActiveModel
|
|||||||
end
|
end
|
||||||
|
|
||||||
class SerializerTest < Minitest::Test
|
class SerializerTest < Minitest::Test
|
||||||
|
class MyProfile < Profile
|
||||||
|
end
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@profile = Profile.new
|
@profile = Profile.new
|
||||||
|
@my_profile = MyProfile.new
|
||||||
@model = ::Model.new
|
@model = ::Model.new
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -41,6 +45,11 @@ module ActiveModel
|
|||||||
serializer = ActiveModel::Serializer.serializer_for(@model)
|
serializer = ActiveModel::Serializer.serializer_for(@model)
|
||||||
assert_equal nil, serializer
|
assert_equal nil, serializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_serializer_inherited_serializer
|
||||||
|
serializer = ActiveModel::Serializer.serializer_for(@my_profile)
|
||||||
|
assert_equal ProfileSerializer, serializer
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user