aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2017-02-28 17:54:03 -0500
committerGitHub <noreply@github.com>2017-02-28 17:54:03 -0500
commit4f384678b639b924b481ec4959f9b93b9d34061c (patch)
treee840cf1ec2724b9f3e552c112992609b7b039859 /activerecord/lib
parent6a7bd6e2e4a4f408781fdfbbfb9508b5a872e9f6 (diff)
parent310dc5dc443023ca4231eb0788e34ef6d157fa06 (diff)
downloadrails-4f384678b639b924b481ec4959f9b93b9d34061c.tar.gz
rails-4f384678b639b924b481ec4959f9b93b9d34061c.tar.bz2
rails-4f384678b639b924b481ec4959f9b93b9d34061c.zip
Merge pull request #28217 from kamipo/create_join_table_respects_reference_key_type
`create_join_table` should respect `references` column type
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb12
1 files changed, 5 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
index c44215cd43..e683106527 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -334,18 +334,16 @@ module ActiveRecord
# part_id int NOT NULL,
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8
#
- def create_join_table(table_1, table_2, options = {})
+ def create_join_table(table_1, table_2, column_options: {}, **options)
join_table_name = find_join_table_name(table_1, table_2, options)
- column_options = options.delete(:column_options) || {}
- column_options.reverse_merge!(null: false)
- type = column_options.delete(:type) || :integer
+ column_options.reverse_merge!(null: false, index: false)
- t1_column, t2_column = [table_1, table_2].map { |t| t.to_s.singularize.foreign_key }
+ t1_ref, t2_ref = [table_1, table_2].map { |t| t.to_s.singularize }
create_table(join_table_name, options.merge!(id: false)) do |td|
- td.send type, t1_column, column_options
- td.send type, t2_column, column_options
+ td.references t1_ref, column_options
+ td.references t2_ref, column_options
yield td if block_given?
end
end