Class: Qa::Local::TablesGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
ActiveRecord::Generators::Migration
Defined in:
lib/generators/qa/local/tables/tables_generator.rb

Instance Method Summary collapse

Instance Method Details

#migrationsObject



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

def migrations
  if defined?(ActiveRecord::ConnectionAdapters::Mysql2Adapter) &&  ActiveRecord::Base.connection.instance_of?(ActiveRecord::ConnectionAdapters::Mysql2Adapter)
    message = "Use the mysql table based generator if you are using mysql 'rails generate qa:local:tables:mysql'"
    say_status("error", message, :red)
    return 0
  end
  generate "model qa/local_authority name:string:uniq"
  generate "model qa/local_authority_entry local_authority:references label:string uri:string:uniq"
  migration_file = Dir.entries(File.join(destination_root,'db/migrate/'))
                       .reject{|name| !name.include?('create_qa_local_authority_entries')}.first
  migration_file = File.join('db/migrate',migration_file)
  gsub_file migration_file,
            't.references :local_authority, index: true, foreign_key: true',
            't.references :local_authority, foreign_key: { to_table: :qa_local_authorities }, index: true'

  message = "Rails doesn't support functional indexes in migrations, so you'll have to add this manually:\n" \
"CREATE INDEX \"index_qa_local_authority_entries_on_lower_label\" ON \"qa_local_authority_entries\" (local_authority_id, lower(label))\n" \
"   OR on Sqlite: \n" \
"CREATE INDEX \"index_qa_local_authority_entries_on_lower_label\" ON \"qa_local_authority_entries\" (local_authority_id, label collate nocase)\n"
  say_status("info", message, :yellow)
end