在mysql中使用Rails多数组格式

时间:2013-09-22 20:52:04

标签: php mysql ruby-on-rails

有一个人在PHP中做过的旧项目,并试图将其转换为Rails。尝试迭代rails中的多个数组时遇到问题。 存储在数据库中的数组如下所示:

a:5:{i:0;s:8:"Director";i:1;s:11:"Shareholder";i:2;s:14:"Vice President";i:3;s:9:"Secretary";i:4;s:9:"Treasurer";}

我试图显示字符串值,例如“Director”和“Shareholder”。 是否需要将DB字段更改为其他格式才能生效? 如何在rails中完成?

提前谢谢

1 个答案:

答案 0 :(得分:0)

这看起来像PHP serialize函数的输出给我。

如果您有PHP或者不介意安装它以帮助进行数据迁移,那么我会编写一个简短的PHP脚本,使用PHP的unserializejson_encode将这些列转换为JSON函数:读取值unserializejson_encode结果,将其写回数据库(全部用PHP)。

之后,您应该可以将ActiveRecord的serializeJSON as the storage format一起使用:

class Model < ActiveRecord::Base
  serialize :whatever_it_is_called, JSON
end

如果你在PHP-land中有YAML支持,你也可以使用YAML(ActiveRecord的serialize的默认值)。

如果您根本不想触及PHP,那么您将不得不为PHP的serialize格式(这似乎在PHP文档中有详细记录)编写Ruby解析器并将其连接到ActiveRecord的serialize

当然,您将使用真实数据库的副本完成所有这些工作。