diff options
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb | 32 |
1 files changed, 2 insertions, 30 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 a19bcc86c2..6e42089801 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb @@ -645,36 +645,8 @@ module ActiveRecord # # add_reference(:products, :supplier, foreign_key: true) # - def add_reference( - table_name, - ref_name, - polymorphic: false, - index: false, - foreign_key: false, - type: :integer, - **options - ) - polymorphic_options = polymorphic.is_a?(Hash) ? polymorphic : options - index_options = index.is_a?(Hash) ? index : {} - foreign_key_options = foreign_key.is_a?(Hash) ? foreign_key : {} - - if polymorphic && foreign_key - raise ArgumentError, "Cannot add a foreign key to a polymorphic relation" - end - - add_column(table_name, "#{ref_name}_id", type, options) - - if polymorphic - add_column(table_name, "#{ref_name}_type", :string, polymorphic_options) - end - - if index - add_index(table_name, polymorphic ? %w[type id].map{ |t| "#{ref_name}_#{t}" } : "#{ref_name}_id", index_options) - end - - if foreign_key - add_foreign_key(table_name, ref_name.to_s.pluralize, foreign_key_options) - end + def add_reference(table_name, *args) + ReferenceDefinition.new(*args).add_to(update_table_definition(table_name, self)) end alias :add_belongs_to :add_reference |