Rails ActiveRecord serialize方法在测试环境中不起作用

时间:2011-03-09 18:39:04

标签: ruby-on-rails testing serialization activerecord

我在测试中遇到了ActiveRecord serialize方法的反序列化问题。
它只是给我纯String而不是我的数据数组。

示例:

User > ActiveRecord::Base
   serialize :roles, Array
end

控制台:

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

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

在测试环境中:

User.first.roles
# => "--- \n- admin\n- support\n"

它是一个字符串。似乎YAML序列化不在那里工作,但我不知道该怎么做才能让它工作。

我已经尝试用thisthisthisthis来解决这个问题,但没有运气。

非常感谢任何建议 马丁

2 个答案:

答案 0 :(得分:2)

毕竟要绕过这个,我需要直接调用数据库中的数据而不涉及“序列化”AR方法。

YAML::load(User.first.roles_before_type_cast)

现在测试环境也直接解析数据并给我正确的角色Array。

答案 1 :(得分:0)

我不知道它是否解决了您的问题,但您总是可以使用

从字符串中取回数组
YAML::load("--- \n- admin\n- support\n")
# => ["admin", "support"]

因此,在您的测试环境中,您应该

YAML::load(User.first.roles)