method

foreign_key_options

Importance_0
v7.1.3.2 - Show latest stable - 0 notes - Class: ActiveRecord::ConnectionAdapters::SchemaStatements
foreign_key_options(from_table, to_table, options) public

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb, line 1213
      def foreign_key_options(from_table, to_table, options) # :nodoc:
        options = options.dup

        if options[:primary_key].is_a?(Array)
          options[:column] ||= options[:primary_key].map do |pk_column|
            foreign_key_column_for(to_table, pk_column)
          end
        else
          options[:column] ||= foreign_key_column_for(to_table, "id")
        end

        options[:name]   ||= foreign_key_name(from_table, options)

        if options[:column].is_a?(Array) || options[:primary_key].is_a?(Array)
          if Array(options[:primary_key]).size != Array(options[:column]).size
            raise ArgumentError, <<~MSG.squish
              For composite primary keys, specify :column and :primary_key, where
              :column must reference all the :primary_key columns from #{to_table.inspect}
            MSG
          end
        end

        options
      end
Register or log in to add new notes.