class MigrateHstoreToJson < ActiveRecord::Migration def up rename_column :posts, :data, :data_hstore add_column :posts, :data, :jsonb, default: {}, null: false, index: { using: 'gin' } execute 'UPDATE "posts" SET "data" = json_object(hstore_to_matrix("data_hstore"))::jsonb' remove_column :posts, :data_hstore end def down rename_column :posts, :data, :data_jsonb add_column :posts, :data, :hstore, default: {}, null: false execute 'UPDATE "posts" SET "data" = (SELECT hstore(key, value) FROM jsonb_each_text("data_jsonb"))' remove_column :posts, :data_jsonb end end