diff --git a/lib/active_model/serializer/adapter.rb b/lib/active_model/serializer/adapter.rb index d5cd935d..345c788c 100644 --- a/lib/active_model/serializer/adapter.rb +++ b/lib/active_model/serializer/adapter.rb @@ -5,8 +5,10 @@ module ActiveModel autoload :SimpleAdapter autoload :NullAdapter + attr_reader :serializer + def initialize(serializer) - @attributes = serializer.attributes + @serializer = serializer end def serializable_hash(options = {}) diff --git a/lib/active_model/serializer/adapter/simple_adapter.rb b/lib/active_model/serializer/adapter/simple_adapter.rb index 90749307..02b244ae 100644 --- a/lib/active_model/serializer/adapter/simple_adapter.rb +++ b/lib/active_model/serializer/adapter/simple_adapter.rb @@ -3,7 +3,7 @@ module ActiveModel class Adapter class SimpleAdapter < Adapter def to_json(options={}) - @attributes.each_with_object({}) do |(attr, value), h| + serializer.attributes.each_with_object({}) do |(attr, value), h| h[attr] = value end.to_json # FIXME: why does passing options here cause {}? end diff --git a/test/adapter_test.rb b/test/adapter_test.rb index 32ef6957..fdc88e4b 100644 --- a/test/adapter_test.rb +++ b/test/adapter_test.rb @@ -5,8 +5,8 @@ module ActiveModel class AdapterTest < Minitest::Test def setup profile = Profile.new - serializer = ProfileSerializer.new(profile) - @adapter = ActiveModel::Serializer::Adapter.new(serializer) + @serializer = ProfileSerializer.new(profile) + @adapter = ActiveModel::Serializer::Adapter.new(@serializer) end def test_serializable_hash_is_abstract_method @@ -20,6 +20,10 @@ module ActiveModel @adapter.to_json(only: [:name]) end end + + def test_serializer + assert_equal @serializer, @adapter.serializer + end end class AdapterForTest < Minitest::Test