Bug in serialization_scope nil
scope methods existing on the serializer
#1509
Milestone
serialization_scope nil
scope methods existing on the serializer
#1509
Discovered in https://github.com/rails-api/active_model_serializers/pull/1252/files#r52560934
Follows is the failing test:
Summary:
It may be either of
[:body, :comments, :json_key, :current_user, :_reflections, :_reflections?, :attributes, :_links, :_links?, :_meta, :_meta?, :_type, :_type?, :object, :object=, :root, :root=, :scope, :scope=, :read_attribute_for_serialization, :associations, :config]
[:_reflections, :_reflections?, :attributes, :_links, :_links?, :_meta, :_meta?, :_type, :_type?, :object, :object=, :root, :root=, :scope, :scope=, :json_key, :read_attribute_for_serialization, :associations, :config]
And has to do, I think, with a method on the serializer such as
comments
calling the scope namecurrent_user
which may not be set.One problem is that the
scope_name
andscope
options aren't being passed through to the serializer. The controller overwrites the:scope
and:scope_name
options passed to render with the values ofserialization_scope
and_serialization_scope
respectively. But, even with that fixed, this still ocurrs.If we change Serializer#read_attribute_for_serialization to check for
respond_to?(attr); send(attr)
the problem persists. i.e. not used._serializer_instance_methods
at allWhen
scope
is present butscope_name
is nil,current_user
won't exist.Given:
then
It can be reproduced by running
bundle exec ruby -Ilib:test -rtest_helper test/action_controller/serialization_scope_name_test.rb -n "/^(test_default_scope_admin|test_default_scope_non_admin|test_default_serialization_scope|test_default_serialization_scope_object|test_defined_serialization_scope|test_defined_serialization_scope_object|test_serialization_scope_admin|test_serialization_scope_non_admin|test_nil_serialization_scope|test_nil_scope_passed_in_current_user|test_nil_serialization_scope_object|test_nil_scope)$/" --seed 41462
at bf4@47669f5The text was updated successfully, but these errors were encountered: