有一个人在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中完成?
提前谢谢
答案 0 :(得分:0)
这看起来像PHP serialize
函数的输出给我。
如果您有PHP或者不介意安装它以帮助进行数据迁移,那么我会编写一个简短的PHP脚本,使用PHP的unserialize
和json_encode
将这些列转换为JSON函数:读取值unserialize
,json_encode
结果,将其写回数据库(全部用PHP)。
之后,您应该可以将ActiveRecord的serialize
与JSON 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
。
当然,您将使用真实数据库的副本完成所有这些工作。