ActiveRecord serialize method not returning YAML array in test environment.

27 views
Skip to first unread message

Marcin Seroczyński

unread,
Mar 9, 2011, 1:24:22 PM3/9/11
to Ruby on Rails: Talk
Hello,

I've got a problem with deserialization of AR "serialize" method
(http://apidock.com/rails/ActiveRecord/Base/serialize/class) in my
tests.
It just gives me pure String instead of my data Array.

Example:
User > AR::Base
serialize :roles, Array
end

Console:
u = User.new
u.roles = ["admin", "support"]
u.save
# => true

User.first.roles
# => ["admin", "support"]


In test environment:
User.first.roles
# => "--- \n- admin\n"

it is a String. It seems that YAML serialize is not working there but
I have no idea what to do to get it working.

I was already trying to figure it out with these, but with no luck.
https://rails.lighthouseapp.com/projects/8994/tickets/5002-nested-objects-dont-deserialized-completely-rails-3-beta-4
http://itsignals.cascadia.com.au/?p=10
http://stackoverflow.com/questions/4705867/rails-doesnt-load-classes-on-deserializing-yaml-marshal-objects
http://blog.sbf5.com/?p=39

Any advice would be greatly appreciated.
Martin

Marcin Seroczyński

unread,
Mar 10, 2011, 10:13:22 AM3/10/11
to Ruby on Rails: Talk
After all to bypass this I needed to call the data in database
directly without involvement of "serialize" AR method.

YAML::load(User.first.roles_before_type_cast)

And now test environment also directly parses the data and give me
correct roles Array.

On 9 Mar, 19:24, Marcin Seroczyński <mar...@seroczynski.net> wrote:
> Hello,
>
> I've got a problem with deserialization of AR "serialize" method
> (http://apidock.com/rails/ActiveRecord/Base/serialize/class) in my
> tests.
> It just gives me pure String instead of my data Array.
>
> Example:
> User > AR::Base
>    serialize:roles, Array
> end
>
> Console:
> u = User.new
> u.roles = ["admin", "support"]
> u.save
> # => true
>
> User.first.roles
> # => ["admin", "support"]
>
> In test environment:
> User.first.roles
> # => "--- \n- admin\n"
>
> it is a String. It seems that YAMLserializeis not working there but
> I have no idea what to do to get it working.
>
> I was already trying to figure it out with these, but with no luck.https://rails.lighthouseapp.com/projects/8994/tickets/5002-nested-obj...http://itsignals.cascadia.com.au/?p=10http://stackoverflow.com/questions/4705867/rails-doesnt-load-classes-...http://blog.sbf5.com/?p=39
Reply all
Reply to author
Forward
0 new messages