【问题标题】:ActiveRecord::SerializationTypeMismatch: attribute was supposed to be a Hash, but was a StringActiveRecord::SerializationTypeMismatch: 属性应该是一个哈希,但是是一个字符串
【发布时间】:2018-04-29 20:48:07
【问题描述】:

为了得到一个哈希,我有这个:

serialize :colors, Hash

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

为了展示这一点,我从“serialize :colors, Hash”中取出了“Hash”,以便在控制台中查看错误。

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

不知道发生了什么,但似乎哈希已经变成了一个字符串,我不知道为什么。我以前没有这个问题,但我现在有这个项目的两个版本,第一个版本在 rails 2 中,另一个在 rails 3 中,我在两者之间切换。我觉得自从进入 rails 3 并回到 rails 2 后就出现了错误。有人知道我该如何解决这个错误以及它为什么会发生吗?

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

【问题讨论】:

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


    【解决方案1】:

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

    • 打开Mysql

      mysql -u root -D 数据库名 -p

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

      UPDATE colors_table SET colors = null WHERE id = 1;

    然后我能够在 rails 控制台中更新值而不会出错。

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 2017-02-14
      • 2012-05-03
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2017-10-31
      相关资源
      最近更新 更多