# ActiveRecord::Serialization bug

**URL:** <https://www.ruby-forum.com/t/activerecord-serialization-bug/126544>\
**Category:** Rails\
**Created:** [January 19, 2008, 9:31am UTC](https://www.ruby-forum.com/t/activerecord-serialization-bug/126544 "2008-01-19T09:31:07Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![eggie5](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/7c8e57/32.png) [@eggie5](https://www.ruby-forum.com/u/eggie5)\
**Post date:** [January 19, 2008, 9:31am UTC](https://www.ruby-forum.com/t/activerecord-serialization-bug/126544/1 "2008-01-19T09:31:07Z")

</div>

I think there exists a bug in the ActiveRecord::Serialization.

The example below takes an Active Record Campaign object and  
serializes it into JSON including its related sub\_category object and  
its related subscriptions object.

@campaign.to\_json(:include=\> {:sub\_category =\> {:include  
=\> :subscriptions}})

This works perfect and returns:

{“sub\_category\_id”: 1, “name”: “ready campaign”, “updated\_at”: null,  
“thumbnail”: null, “sub\_category”: {“name”: “News Alerts”,  
“subscriptions”: [{“sub\_category\_id”: 1, “updated\_at”: “2008/01/18  
23:01:41 -0800”, “timestamp\_start”: “2008/01/18 22:12:00 -0800”, “id”:  
1, “timestamp\_end”: “2008/01/18 23:01:00 -0800”, “subscriber\_id”: 1,  
“is\_subscribed”: true, “created\_at”: “2008/01/18 23:01:41 -0800”}],  
“updated\_at”: null, “long\_text”: null, “id”: 1, “description”: null,  
“category\_id”: 1, “picture”: null, “created\_at”: null}, “body”: “you  
should send this campaign now”, “campaign\_status\_id”: 3, “subject”:  
“this campaign is ready”, “notes”: null, “id”: 5, “billing\_code”:  
null, “valid\_after”: null, “ad\_id\_source”: null, “created\_at”:  
“2007/08/24 16:15:16 -0700”}

Adding another relationship on the same level of sub\_category works  
too:

@campaign.to\_json(:include=\> [:sub\_category, :delivery\_schedule])

However, If I want to include another object on the same level as  
sub\_category, the serialization fails (see delivery\_schedules on same  
level as sub\_category):

@campaign.to\_json(:include=\> [{:sub\_category =\> {:include  
=\> :subscriptions}}, :delivery\_schedule])

Returns this error:

NoMethodError (You have a nil object when you didn’t expect it!  
The error occurred while evaluating nil.macro):  
/vendor/rails/activerecord/lib/active\_record/serialization.rb:  
55:in `add_includes' /vendor/rails/activerecord/lib/active_record/serialization.rb: 54:in`each’  
/vendor/rails/activerecord/lib/active\_record/serialization.rb:  
54:in `add_includes' /vendor/rails/activerecord/lib/active_record/serialization.rb: 76:in`serializable\_record’  
/vendor/rails/activesupport/lib/active\_support/core\_ext/object/  
misc.rb:28:in `returning' /vendor/rails/activerecord/lib/active_record/serialization.rb: 74:in`serializable\_record’  
/vendor/rails/activerecord/lib/active\_record/serializers/  
json\_serializer.rb:67:in `serialize' /vendor/rails/activerecord/lib/active_record/serialization.rb: 91:in`to\_s’  
/vendor/rails/activerecord/lib/active\_record/serializers/  
json\_serializer.rb:57:in `to\_json’

Any ideas?
