1
0
Fork 0
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:
Mehmet Emin İNAÇ 2015-06-25 13:52:40 +03:00
parent 5b36015830
commit c26b9148e5
3 changed files with 37 additions and 2 deletions

View file

@ -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:

View file

@ -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

View file

@ -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