diff --git a/app/models/submitter.rb b/app/models/submitter.rb index 96e01738..96a02945 100644 --- a/app/models/submitter.rb +++ b/app/models/submitter.rb @@ -20,7 +20,7 @@ # values :text not null # created_at :datetime not null # updated_at :datetime not null -# account_id :bigint +# account_id :bigint not null # external_id :string # submission_id :bigint not null # diff --git a/db/migrate/20240816072859_populate_submitter_account_id.rb b/db/migrate/20240816072859_populate_submitter_account_id.rb new file mode 100644 index 00000000..29960068 --- /dev/null +++ b/db/migrate/20240816072859_populate_submitter_account_id.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class PopulateSubmitterAccountId < ActiveRecord::Migration[7.1] + disable_ddl_transaction + + class MigrationSubmitter < ApplicationRecord + self.table_name = 'submitters' + belongs_to :submission, class_name: 'MigrationSubmission' + end + + class MigrationSubmission < ApplicationRecord + self.table_name = 'submissions' + end + + def up + MigrationSubmitter.where(account_id: nil).preload(:submission).find_each do |submitter| + submitter.update_columns(account_id: submitter.submission.account_id) + end + + if MigrationSubmitter.exists?(account_id: nil) + MigrationSubmitter.where(account_id: nil).preload(:submission).find_each do |submitter| + submitter.update_columns(account_id: submitter.submission.account_id) + end + end + + change_column_null :submitters, :account_id, false + end + + def down + nil + end +end diff --git a/db/schema.rb b/db/schema.rb index 985ae0f8..08f49832 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2024_08_16_064633) do +ActiveRecord::Schema[7.1].define(version: 2024_08_16_072859) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -243,7 +243,7 @@ ActiveRecord::Schema[7.1].define(version: 2024_08_16_064633) do t.string "external_id" t.text "preferences", null: false t.text "metadata", null: false - t.bigint "account_id" + t.bigint "account_id", null: false t.index ["account_id", "id"], name: "index_submitters_on_account_id_and_id" t.index ["email"], name: "index_submitters_on_email" t.index ["external_id"], name: "index_submitters_on_external_id"