通过迁移或 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
我的 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
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