Class: SiteSettingRenameMigrationGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/site_setting_rename_migration/site_setting_rename_migration_generator.rb

Instance Method Summary collapse

Instance Method Details

#create_migration_fileObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/generators/site_setting_rename_migration/site_setting_rename_migration_generator.rb', line 7

def create_migration_file
  migration_version = ActiveRecord::Migration.next_migration_number(0)
  file_path = "db/migrate/#{migration_version}_rename_#{old_name}_setting.rb"
  class_name = "Rename#{old_name.classify}Setting"

  validate_setting_name!(old_name)
  validate_setting_name!(new_name)

  create_file file_path, <<~MIGRATION_FILE
    # frozen_string_literal: true

    class #{class_name} < ActiveRecord::Migration[7.0]
      def up
        execute "UPDATE site_settings SET name = '#{new_name}' WHERE name = '#{old_name}'"
      end

      def down
        execute "UPDATE site_settings SET name = '#{old_name}' WHERE name = '#{new_name}'"
      end
    end
  MIGRATION_FILE
end