1
我有一些表中的所有字段都設置爲零,除了幾個選擇的字段(包括外鍵和一些時間值),在一個每週。目前,我正在使用update_all(field:value,...)命令,它工作得很好。唯一的問題是我必須列出每個我想清除的字段,並且當我更改表格時,我經常忘記添加字段,這會導致錯誤。Rails Postgres:將表中的所有字段設置爲零,除了
有沒有辦法讓鋼軌清除表中的所有領域,除了指定的幾個?
謝謝!
我有一些表中的所有字段都設置爲零,除了幾個選擇的字段(包括外鍵和一些時間值),在一個每週。目前,我正在使用update_all(field:value,...)命令,它工作得很好。唯一的問題是我必須列出每個我想清除的字段,並且當我更改表格時,我經常忘記添加字段,這會導致錯誤。Rails Postgres:將表中的所有字段設置爲零,除了
有沒有辦法讓鋼軌清除表中的所有領域,除了指定的幾個?
謝謝!
在Rails中,每個模型都有方法columns
,它返回列的列表。你可以爲每一個模型做這樣的事情:
columns = Entry.columns.map(&:name)
# => ["id", "dish_id", "name", "value"]
columns_to_update = columns - ["id"]
# => ["dish_id", "name", "value"]
columns_with_zero = columns_to_update.map { |c| [c, 0] }.to_h
# => {"dish_id"=>0, "name"=>0, "value"=>0}
Entry.update_all columns_with_zero
# UPDATE "entries" SET "dish_id" = 0, "name" = '0', "value" = 0
完美。謝謝! –