mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
ActiveRecord::SchemaMigration
has no primary key.
Before this patch, using `ActiveRecord::Base.primary_key_prefix_type` with `:table_name_with_underscore` would change the `SchemaMigration` model to have a primary key. This resulted in broken queries for PG because it tried to return the inserted PK (which does not exist). Closes #15051. Closes #15419.
This commit is contained in:
parent
d23cbbb3ee
commit
8fa8b7124b
3 changed files with 24 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
* `ActiveRecord::SchemaMigration` has no primary key regardless of the
|
||||||
|
`primary_key_prefix_type` configuration.
|
||||||
|
|
||||||
|
Fixes #15051.
|
||||||
|
|
||||||
|
*Yves Senn*
|
||||||
|
|
||||||
* `rake db:migrate:status` works with legacy migration numbers like `00018_xyz.rb`.
|
* `rake db:migrate:status` works with legacy migration numbers like `00018_xyz.rb`.
|
||||||
|
|
||||||
Fixes #15538.
|
Fixes #15538.
|
||||||
|
|
|
@ -5,6 +5,9 @@ require 'active_record/base'
|
||||||
module ActiveRecord
|
module ActiveRecord
|
||||||
class SchemaMigration < ActiveRecord::Base
|
class SchemaMigration < ActiveRecord::Base
|
||||||
class << self
|
class << self
|
||||||
|
def primary_key
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
def table_name
|
def table_name
|
||||||
"#{table_name_prefix}#{ActiveRecord::Base.schema_migrations_table_name}#{table_name_suffix}"
|
"#{table_name_prefix}#{ActiveRecord::Base.schema_migrations_table_name}#{table_name_suffix}"
|
||||||
|
|
|
@ -17,6 +17,20 @@ if ActiveRecord::Base.connection.supports_migrations?
|
||||||
ActiveRecord::SchemaMigration.delete_all rescue nil
|
ActiveRecord::SchemaMigration.delete_all rescue nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_has_no_primary_key
|
||||||
|
old_primary_key_prefix_type = ActiveRecord::Base.primary_key_prefix_type
|
||||||
|
ActiveRecord::Base.primary_key_prefix_type = :table_name_with_underscore
|
||||||
|
assert_nil ActiveRecord::SchemaMigration.primary_key
|
||||||
|
|
||||||
|
ActiveRecord::SchemaMigration.create_table
|
||||||
|
assert_difference "ActiveRecord::SchemaMigration.count", 1 do
|
||||||
|
ActiveRecord::SchemaMigration.create version: 12
|
||||||
|
end
|
||||||
|
ensure
|
||||||
|
ActiveRecord::SchemaMigration.drop_table
|
||||||
|
ActiveRecord::Base.primary_key_prefix_type = old_primary_key_prefix_type
|
||||||
|
end
|
||||||
|
|
||||||
def test_schema_define
|
def test_schema_define
|
||||||
ActiveRecord::Schema.define(:version => 7) do
|
ActiveRecord::Schema.define(:version => 7) do
|
||||||
create_table :fruits do |t|
|
create_table :fruits do |t|
|
||||||
|
|
Loading…
Reference in a new issue