Skip to content

Instantly share code, notes, and snippets.

@boriscy
Forked from estum/migrate_hstore_to_json.rb
Last active August 29, 2015 14:15
Show Gist options
  • Save boriscy/33d7f43782989dbccc47 to your computer and use it in GitHub Desktop.
Save boriscy/33d7f43782989dbccc47 to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment