ActiveRecord :: SerializationTypeMismatch:属性应该是一个哈希,但它是一个字符串

时间:2017-11-16 10:42:56

标签: ruby-on-rails ruby-on-rails-3 activerecord hash ruby-on-rails-2

要获得哈希,我有这个:

serialize :colors, Hash

但我有一个错误,其中此属性的结果如下所示:

为了表明这一点,我拿出了" Hash"来自"序列化:颜色,哈希"在控制台中查看错误。

"--- !map:ActiveSupport::HashWithIndifferentAccess \none: \"#87466d\"\ntwo: \"#307065\"\nthree: \"#c04992\"\nfour: \"#ffffff\"\nfive: \"#636467\"\n"

不确定发生了什么,但看起来Hash已成为一个字符串而我不会'知道为什么。我以前没有遇到这个问题,但我现在有两个版本的项目,第一个是在rails 2中,另一个是在rails 3中,我在两者之间切换。我觉得自从进入rails 3并回到rails 2后发生了错误。任何人都知道如何解决这个错误以及它为什么会发生错误?

我看了一篇类似的帖子但它没有帮助我: "Attribute was supposed to be a Hash, but was a String"

1 个答案:

答案 0 :(得分:0)

好的,所以我通过进入数据库并将属性设置为NULL来修复它,以便清除它。当我使用MySQL时,我做了以下事情:

  • 打开Mysql

    mysql -u root -D database_name -p

  • 更新了Mysql中的属性以重置值:

    UPDATE colors_table SET colors = null WHERE id = 1;

然后我能够无错误地更新rails控制台中的值。