Description
Expected behavior vs actual behavior
Serialize model to JSON after upgrading and making changes required by version 0.10.2.
I'm getting 2 types of errors, one is undefined method '[]' for nil
and the other is undefined method root
in separate areas.
I've done all the conversions I read, i.e. subclassing from ActiveModelSerializers::Model
instead of include ActiveModel::Serialization
. Set adapter
to :json
.
2 questions, what things can cause the undefined method '[]' for nil
and how do I set root false
in render
statements or in serializer
classes?
Environment
ActiveModelSerializers Version (commit ref if not on tag):
0.10.2
OS Type & Version:
Latest OSX
Integrated application and version (e.g., Rails, Grape, etc):
Rails 5.0.0, Ruby 2.3.0
Backtrace
(e.g., provide any applicable backtraces from your application)
Failure/Error: render json: ErrorMessage.new(:missing), status: 404
NoMethodError:
undefined method `[]' for nil:NilClass
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model_serializers/model.rb:36:in `read_attribute_for_serialization'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer.rb:197:in `read_attribute_for_serialization'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer/field.rb:23:in `value'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer/attributes.rb:22:in `block in attributes'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer/attributes.rb:19:in `each'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer/attributes.rb:19:in `each_with_object'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer/attributes.rb:19:in `attributes'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer/caching.rb:216:in `fetch_attributes'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model/serializer.rb:169:in `serializable_hash'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model_serializers/adapter/attributes.rb:7:in `serializable_hash'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model_serializers/adapter/json.rb:6:in `serializable_hash'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/active_model_serializers-0.10.2/lib/active_model_serializers/adapter/base.rb:59:in `as_json'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/activesupport-5.0.0/lib/active_support/json/encoding.rb:33:in `encode'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/activesupport-5.0.0/lib/active_support/json/encoding.rb:20:in `encode'
# /Users/hm/.rvm/gems/ruby-2.3.0@loop_server/gems/activesupport-5.0.0/lib/active_support/core_ext/object/json.rb:37:in `to_json'
....