Class: ActiveRecord::Migration::Compatibility::V5_0
- Defined in:
- lib/active_record/migration/compatibility.rb
Direct Known Subclasses
Defined Under Namespace
Modules: TableDefinition
Instance Method Summary collapse
- #add_column(table_name, column_name, type, options = {}) ⇒ Object
- #add_reference(table_name, ref_name, **options) ⇒ Object (also: #add_belongs_to)
- #change_table(table_name, options = {}) ⇒ Object
- #create_join_table(table_1, table_2, column_options: {}, **options) ⇒ Object
- #create_table(table_name, options = {}) ⇒ Object
Methods inherited from V5_1
Instance Method Details
#add_column(table_name, column_name, type, options = {}) ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/active_record/migration/compatibility.rb', line 105 def add_column(table_name, column_name, type, = {}) if type == :primary_key type = :integer [:primary_key] = true end super end |
#add_reference(table_name, ref_name, **options) ⇒ Object Also known as: add_belongs_to
113 114 115 |
# File 'lib/active_record/migration/compatibility.rb', line 113 def add_reference(table_name, ref_name, **) super(table_name, ref_name, type: :integer, **) end |
#change_table(table_name, options = {}) ⇒ Object
83 84 85 86 87 88 89 90 91 |
# File 'lib/active_record/migration/compatibility.rb', line 83 def change_table(table_name, = {}) if block_given? super do |t| yield compatible_table_definition(t) end else super end end |
#create_join_table(table_1, table_2, column_options: {}, **options) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/active_record/migration/compatibility.rb', line 93 def create_join_table(table_1, table_2, column_options: {}, **) .reverse_merge!(type: :integer) if block_given? super do |t| yield compatible_table_definition(t) end else super end end |
#create_table(table_name, options = {}) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/active_record/migration/compatibility.rb', line 54 def create_table(table_name, = {}) if adapter_name == "PostgreSQL" if [:id] == :uuid && !.key?(:default) [:default] = "uuid_generate_v4()" end end unless adapter_name == "Mysql2" && [:id] == :bigint if [:integer, :bigint].include?([:id]) && !.key?(:default) [:default] = nil end end # Since 5.1 PostgreSQL adapter uses bigserial type for primary # keys by default and MySQL uses bigint. This compat layer makes old migrations utilize # serial/int type instead -- the way it used to work before 5.1. unless .key?(:id) [:id] = :integer end if block_given? super do |t| yield compatible_table_definition(t) end else super end end |