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

时间:2015-08-18 21:10:55

标签: ruby-on-rails postgresql migration psql hstore

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

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

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

而言

但无法解决nil问题。

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

另外,我如何通过psql

执行此操作

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

显然很少有人遇到过这个问题,经过大量的反复试验后,我发现了psql解决方案并且非常简单。

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

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