scinote-web/db/migrate/20220414095100_add_step_text_and_migrate_data.rb

43 lines
1.2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require File.expand_path('app/helpers/database_helper')
class AddStepTextAndMigrateData < ActiveRecord::Migration[6.1]
include DatabaseHelper
def up
create_table :step_texts do |t|
t.references :step, null: false, index: true, foreign_key: true
t.string :text
t.timestamps
end
add_gin_index_without_tags :step_texts, :text
Step.where.not(description: nil).find_in_batches(batch_size: 100) do |steps|
step_texts = []
steps.each do |step|
step_texts << step.step_texts.new(text: step.description)
end
StepText.import(step_texts, validate: false)
end
Step.joins(:tiny_mce_assets, :step_texts)
.preload(:tiny_mce_assets, :step_texts).find_each do |step|
step_text_id = step.step_texts.take.id
step.tiny_mce_assets.update_all(object_type: 'StepText', object_id: step_text_id)
end
end
def down
StepText.joins(:tiny_mce_assets)
.preload(:step, :tiny_mce_assets).find_each do |step_text|
step_text.tiny_mce_assets.update_all(object_type: 'Step', object_id: step_text.step.id)
end
drop_table :step_texts
end
end