![](/img/trans.png)
[英]Extending ActiveRecord::Base in Rails does not work in the test environment
[英]Rails ActiveRecord serialize method doesn't work in test environment
我在测试中遇到了ActiveRecord 序列化方法的反序列化问题。
它只是给我纯String而不是我的数据Array。
例:
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序列化不在那里工作,但我不知道如何使其工作。
我已经试图与弄明白这个 , 这个 , 这个和这个 ,但没有运气。
任何建议将不胜感激。
马丁
毕竟要绕过这个,我需要直接调用数据库中的数据而不涉及“序列化”AR方法。
YAML::load(User.first.roles_before_type_cast)
而现在测试环境也直接解析数据并给我正确的角色Array。
我不知道它是否解决了你的问题,但你总是可以从字符串中取回数组
YAML::load("--- \n- admin\n- support\n")
# => ["admin", "support"]
因此,在您的测试环境中,您应该这样做
YAML::load(User.first.roles)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.