将ActiveRecord数组序列化属性转换为字符串

时间:2018-01-25 18:34:53

标签: ruby-on-rails ruby regex activerecord

我正在开发一个使用See code in use here以这种方式以数组形式存储模型属性的Rails 3.2应用程序:

serialize :bucket, Array

我想删除该序列化并仅存储字符串。问题在于,当我这样做时,我留下了以这种方式存储的字符串:

ruby [62] pry(main)> bucket.inspect => "\"---\\n- something something\\n\""

如何将该字符串清除为something something?我尝试使用正则表达式,但我不能形成一个合适的匹配器。这是我最接近的尝试:

bucket.scan(/\---\\n- (.*?)\\n/)

1 个答案:

答案 0 :(得分:3)

如果您查看该方法的来源,您会看到由于Array不响应:load:dump,因此最终会使用{{1}将数据存储为字符串。因此,如果您不再希望以这种方式对其进行序列化,则可以使用该类将Coders::YAMLColumn数据从字符串中反馈回load,然后将数组重组为一个字符串你的选择。您也可以使用Array,因为YAML似乎只是通过某种类型检查来包装它:

Coders::YAMLColumn