nas/db/migrate/20231105225839_add_master_settings_to_accounts.rb
KMY(雪あすか) f84dae2db6 Fix: 一部環境でマイグレーションできない問題 (#336)
* Fix: 一部環境でマイグレーションできない問題

* Fix

* Fix

* Add settings test
2023-12-07 10:06:25 +09:00

33 lines
1.2 KiB
Ruby

# frozen_string_literal: true
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
class AddMasterSettingsToAccounts < ActiveRecord::Migration[7.1]
include Mastodon::MigrationHelpers
disable_ddl_transaction!
class Account < ApplicationRecord; end
def up
safety_assured do
add_column :accounts, :master_settings, :jsonb
ActiveRecord::Base.connection.execute("UPDATE accounts SET master_settings = json_build_object('subscription_policy', 'block') WHERE accounts.dissubscribable IS TRUE")
ActiveRecord::Base.connection.execute("UPDATE accounts SET master_settings = json_build_object('subscription_policy', 'allow') WHERE accounts.dissubscribable IS FALSE")
remove_column :accounts, :dissubscribable
end
end
def down
safety_assured do
add_column_with_default :accounts, :dissubscribable, :boolean, default: false, allow_null: false
ActiveRecord::Base.connection.execute("UPDATE accounts SET dissubscribable = TRUE WHERE master_settings ->> 'subscription_policy' = 'block'")
ActiveRecord::Base.connection.execute("UPDATE accounts SET dissubscribable = FALSE WHERE master_settings ->> 'subscription_policy' = 'allow'")
remove_column :accounts, :master_settings
end
end
end