0

我们的应用程序有一个文本字段:schedule。

最初,我们将数据存储为字符串。

我们将模型更改为serialize :schedule, Hash

为了修复遗留数据,我们只想用 nil 替换旧的(字符串)数据。

但是,一旦我们添加了序列化,尝试向字段(如果它有字符串)写入任何内容(nil 或替换哈希)都会引发异常:

ActiveRecord::SerializationTypeMismatch: schedule was supposed to be a Hash, but was a String

有没有办法覆盖序列化异常并强制该字段为零或替换哈希?

也许有一种方法可以通过 SQL 更新字段来绕过序列化?

(我知道我们可以使用迁移来删除列然后重新添加它,但我正在寻找一种在 rake 任务中执行此操作的方法。)

4

1 回答 1

1

看看update_column快速更新数据库中的所有记录。UPDATE table SET schedule = NULL这将在不考虑任何验证或回调的情况下向您的数据库发送一个简单的。当然,您会丢失此列中的所有数据,但据我了解您的描述,这不是问题,对吧?

于 2013-01-08T19:29:01.083 回答