I've got a problem with deserialization of ActiveRecord serialize method in my tests.
It just gives me pure String instead of my data Array.
Example:
User > ActiveRecord::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- support\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 this , this , this and this , but with no luck.
Any advice would be greatly appreciated.
Martin
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.
I dont know if it solves your problem, but you can always get back the array from the string using
YAML::load("--- \n- admin\n- support\n")
# => ["admin", "support"]
So, in your test environment, you should do
YAML::load(User.first.roles)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.