【问题标题】:How to delete HSTORE keys?如何删除 HSTORE 密钥?
【发布时间】:2026-01-29 13:15:01
【问题描述】:

我有以下迁移:

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      t.hstore :foos_properties
    end
  end
end

在 hstore 列中,我有 2 个键::foo:bar。是否可以创建另一个迁移以删除 :foo?它应该是什么样子?

我发现了这个:

Foo.update_all([%(foos_properties = delete("foos_properties",?)), 'foo'])

这样安全吗?还是我应该考虑一种更明智的方法?

【问题讨论】:

  • 您可以随意更改密钥,而无需迁移。

标签: ruby-on-rails postgresql activerecord ruby-on-rails-4 migration


【解决方案1】:

我认为你的方法很好。我做了一些类似的事情:

ObjectModel.find_each do |object_model|
  object_model.foos_properties.delete("foo")
end

【讨论】:

  • 我认为您需要添加object_model.save 以在数据库级别对其进行更新。