繁体   English   中英

如何在Rails上使用PostgreSQL和Ruby更新数组类型的列

[英]How to update a column of type array with postgresql and ruby on rails

我有一个表的列,该表是在rails迁移中使用以下Ruby创建的

def change    
    add_column :matches, :st_history, :smallint, array: true, default: []
end

在postresql数据库上。 我希望将列的所有值重置为默认值。 我努力了

Match.update_all(st_history: [])

但这不会更改任何字段。 查看api文档 ,它指出“它应该只接收可以原样传递给SQL数据库的值”,因此我怀疑该数组是复杂的数据类型,无法通过简单的update_all命令使用。 该数据库有数百万行,因此我不想单独更新每一行。 快速的方法是什么?

您可以尝试创建迁移。并可以提供默认值

update_column :table_name, :col_name, :integer, array: true, null: false, default '{}'

这实际上有效。 只需要重新加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM