0

有一个有人用 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”。数据库字段是否需要更改为不同的格式才能工作?这将如何在 Rails 中完成?

先感谢您

4

1 回答 1

0

在我看来,这就像 PHPserialize函数的输出。

如果你有 PHP 或者不介意安装它来帮助数据迁移,那么我会编写一个简短的 PHP 脚本来使用 PHPunserializejson_encode函数将这些列转换为 JSON:读取一个值,unserialize它,json_encode结果,写它返回数据库(全部在 PHP 中)。

之后,您应该可以使用serialize带有JSON 作为存储格式的 ActiveRecord :

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

serialize如果您在 PHP 领域支持YAML,您也可以使用 YAML(ActiveRecord 的默认设置)。

如果你根本不想接触 PHP,那么你必须为 PHP 的serialize格式编写 Ruby 解析器(这似乎在 PHP 文档中有很好的记录)并将其连接到 ActiveRecord 的serialize.

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

于 2013-09-22T23:43:08.263 回答