mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add table name prefix and suffix support to add_foreign_key and remove_foreign_key methods
fix tests
This commit is contained in:
parent
5b36015830
commit
c26b9148e5
3 changed files with 37 additions and 2 deletions
|
@ -832,7 +832,10 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def foreign_key_column_for(table_name) # :nodoc:
|
||||
"#{table_name.to_s.singularize}_id"
|
||||
prefix = Base.table_name_prefix
|
||||
suffix = Base.table_name_suffix
|
||||
name = table_name.to_s =~ /#{prefix}(.+)#{suffix}/ ? $1 : table_name.to_s
|
||||
"#{name.singularize}_id"
|
||||
end
|
||||
|
||||
def dump_schema_information #:nodoc:
|
||||
|
|
|
@ -640,7 +640,8 @@ module ActiveRecord
|
|||
unless @connection.respond_to? :revert
|
||||
unless arguments.empty? || [:execute, :enable_extension, :disable_extension].include?(method)
|
||||
arguments[0] = proper_table_name(arguments.first, table_name_options)
|
||||
if [:rename_table, :add_foreign_key].include?(method)
|
||||
if [:rename_table, :add_foreign_key].include?(method) ||
|
||||
(method == :remove_foreign_key && !arguments.second.is_a?(Hash))
|
||||
arguments[1] = proper_table_name(arguments.second, table_name_options)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -243,6 +243,37 @@ module ActiveRecord
|
|||
silence_stream($stdout) { migration.migrate(:down) }
|
||||
end
|
||||
|
||||
class CreateSchoolsAndClassesMigration < ActiveRecord::Migration
|
||||
def change
|
||||
create_table(:schools)
|
||||
|
||||
create_table(:classes) do |t|
|
||||
t.column :school_id, :integer
|
||||
end
|
||||
add_foreign_key :classes, :schools
|
||||
end
|
||||
end
|
||||
|
||||
def test_add_foreign_key_with_prefix
|
||||
ActiveRecord::Base.table_name_prefix = 'p_'
|
||||
migration = CreateSchoolsAndClassesMigration.new
|
||||
silence_stream($stdout) { migration.migrate(:up) }
|
||||
assert_equal 1, @connection.foreign_keys("p_classes").size
|
||||
ensure
|
||||
silence_stream($stdout) { migration.migrate(:down) }
|
||||
ActiveRecord::Base.table_name_prefix = nil
|
||||
end
|
||||
|
||||
def test_add_foreign_key_with_suffix
|
||||
ActiveRecord::Base.table_name_suffix = '_s'
|
||||
migration = CreateSchoolsAndClassesMigration.new
|
||||
silence_stream($stdout) { migration.migrate(:up) }
|
||||
assert_equal 1, @connection.foreign_keys("classes_s").size
|
||||
ensure
|
||||
silence_stream($stdout) { migration.migrate(:down) }
|
||||
ActiveRecord::Base.table_name_suffix = nil
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue