簡體   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