# Serialize ... what am I doing wrong?

**URL:** <https://www.ruby-forum.com/t/serialize-what-am-i-doing-wrong/160331>\
**Category:** Rails\
**Created:** [February 14, 2009, 4:30pm UTC](https://www.ruby-forum.com/t/serialize-what-am-i-doing-wrong/160331 "2009-02-14T16:30:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![philswenson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/7feea3/32.png) [@philswenson](https://www.ruby-forum.com/u/philswenson)\
**Post date:** [February 14, 2009, 4:30pm UTC](https://www.ruby-forum.com/t/serialize-what-am-i-doing-wrong/160331/1 "2009-02-14T16:30:05Z")

</div>

Hi.  
I want to serialize out an object to the database. But I am getting an  
integer value in the column when I expect to see some yaml!

migration:  
class CreateSummaries \< ActiveRecord::Migration  
def self.up  
create\_table :summaries do |t|  
t.text :summary\_data  
t.timestamps  
end  
end  
end

class:  
class Summary \< ActiveRecord::Base  
serialize :summary\_data  
end

example:  
summary = Summary.new(:summary\_data =\> User.first)  
=\> #\<Summary id: nil, fss\_player\_id: nil, stats\_type: nil, scope: nil,  
summary\_data: #\<User id: 4, login: “LoginName”, email: “removed\_email\_address@domain.invalid”,  
crypted\_password: “cbc8411974ad085f608b6e0a05dd608e7577de19”, salt:  
“ddc4528beea65095b7f5619912a6ca0681d0c10e”, created\_at: “2008-09-12  
18:43:19”, updated\_at: “2009-02-05 04:20:58”, remember\_token: nil,  
remember\_token\_expires\_at: nil, pw\_reset\_code: nil, role:  
“commissioner”, sign\_up\_code:  
“44e11a23be5b7833bf73d479a05166c0e0377c56”, reset\_password\_code\_until:  
nil, permalink: “fname”, name: “FName”, street: nil, city: nil,  
province: nil, postcode: nil, country: nil, home\_phone: nil,  
mobile\_phone: nil, display\_name: “FName”, display\_teams: true,  
website: nil, occupation: nil, interests: nil, favourite\_teams: nil,  
anonymous\_contact: false\>, created\_at: nil, updated\_at: nil\>

> > summary.save!  
> > =\> true
> 
> > Summary.first.summary\_data  
> > =\> 4

What am I doing wrong?

---

<div class="post-metadata">

**Author:** ![philswenson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/7feea3/32.png) [@philswenson](https://www.ruby-forum.com/u/philswenson)\
**Post date:** [February 14, 2009, 9:13pm UTC](https://www.ruby-forum.com/t/serialize-what-am-i-doing-wrong/160331/2 "2009-02-14T21:13:20Z")

</div>

Summary.new is expecting to receive a hash, which isn’t what you’re  
giving it.

i.e.:  
summary = Summary.new( :summary\_data =\> { “name”=\>“Administator”,  
“login”=\>“admin” } )

summary.save!

Summary.last.summary\_data  
=\> {“name”=\>“Administrator”, “login”=\>“admin”}

---

<div class="post-metadata">

**Author:** ![philswenson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/7feea3/32.png) [@philswenson](https://www.ruby-forum.com/u/philswenson)\
**Post date:** [February 15, 2009, 10:36am UTC](https://www.ruby-forum.com/t/serialize-what-am-i-doing-wrong/160331/3 "2009-02-15T10:36:35Z")

</div>

Oh! I thought the point was that I could save any object… are you  
saying I can only save hash’s?

---

<div class="post-metadata">

**Author:** ![philswenson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/7feea3/32.png) [@philswenson](https://www.ruby-forum.com/u/philswenson)\
**Post date:** [February 15, 2009, 11:26am UTC](https://www.ruby-forum.com/t/serialize-what-am-i-doing-wrong/160331/4 "2009-02-15T11:26:27Z")

</div>

Try this out (assuming you’ve got a User with id == 1):

summary = Summary.new(:summary\_data =\> User.find(1).attributes).save!

Go here: [ActiveRecord::Base](http://api.rubyonrails.org/classes/ActiveRecord/Base.html) and  
search for serialize

---

<div class="post-metadata">

**Author:** ![philswenson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/7feea3/32.png) [@philswenson](https://www.ruby-forum.com/u/philswenson)\
**Post date:** [February 15, 2009, 11:56am UTC](https://www.ruby-forum.com/t/serialize-what-am-i-doing-wrong/160331/5 "2009-02-15T11:56:21Z")

</div>

I picked on the hash since that was your example - what appeared to be  
a User record. Yes, you can save anything you want, it’s only yaml  
after all…

So the :summary\_data from your example maps on to a series of  
name\<\>value tuples. Other languages refer to this as marshalling, I  
seem to recall that Ruby has some functions with marshall in their  
name.

Rails likes to talk about serializing and attribute lists,  
ActiveRecord provides the attributes method as an easy way to  
serialize the record’s fields.
