通过迁移或 psql 设置默认的 hstore 列键值对

Set default hstore column key value pairs via migration or psql

我的 users table 中有一个 hstore 列,似乎无法通过迁移或 psql 设置默认键值对。

我已经提到了这个问题Adding a key to an empty hstore column,但没有成功。

就本文提到的迁移解决方案而言,http://www.economyofeffort.com/2014/12/16/postgres-hstore-default-value-in-rails-4/

但是无法解决 nil 问题。

如何创建迁移,将键值对默认添加到 table 中的 hstore 列?例如... value1 = '1', value2 = '2'?

此外,我如何通过 psql 执行此操作?

显然很少有人遇到过这个问题,我在反复试验后找到了 psql 解决方案,而且非常简单。

UPDATE users SET settings = '"value1"=>"1", "value2"=>"2"';

但是仍然对迁移解决方案感兴趣。

Rails 4 中,您只需使用 hstore

的默认值设置 ruby 散列
class AddStatisticsToOffers < ActiveRecord::Migration
  def change
    add_column :offers, :statistics, :hstore, default: {total_visitors: 0}, null: false
  end
end

class Offer < ActiveRecord::Base
  hstore_accessor :statistics,
              total_visitors:     :integer
end

class OffersController < ApplicationController
  def show
    respond_to do |format|
      format.html { @offer.total_visitors += 1; @offer.save }
    end
  end
end