我有column_1(string),我创建了column_2(string),并将column_2序列化为数组
class Model < ActiveRecord::Base
serialize :column_2, Array
...
和我需要更新column_2与column_1值,像这样:
Model.update_all('column_2 = column_1')
但是因为我使用serialize作为数组的column_2,我需要保存所有值(字符串)从column_1数组
乌利希期刊指南。我试过.update_all('column_2 = (array[column_1])
,但在这种情况下,无论如何,当我调用column_2
时,我得到它作为字符串:
"{"value"}"
是的,可以使用下面的查询使用array_to_json正确转换为数组
Model.update_all("column_2 = (array_to_json(array[column_1]))")
不正确:-我不确定是否直接使用SQL转换列数据会在这里工作。Rails内置了序列化方法,可以在将数据推送到sql之前对其进行转换。因此,在sql级别将字符串转换为数组是不可能的。您需要迭代记录并更新每个记录,如下所示:-
model_instance.update('column_2 = ?', [column_1])