instance method foreign_keys

Ruby on Rails 5.0.7.2

Since v4.2.11.3

Available in: v4.2.11.3 v5.0.7.2 v5.1.7 v5.2.8.1 v6.0.6.1 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3.2 v8.0.5.1 v8.1.3.1 edge

Signature

foreign_keys(table_name)

No documentation comment.

Parameters

table_name req
Source
# File activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb, line 515
      def foreign_keys(table_name)
        raise ArgumentError unless table_name.present?

        schema, name = extract_schema_qualified_name(table_name)

        fk_info = select_all(<<-SQL.strip_heredoc, 'SCHEMA')
          SELECT fk.referenced_table_name AS 'to_table',
                 fk.referenced_column_name AS 'primary_key',
                 fk.column_name AS 'column',
                 fk.constraint_name AS 'name',
                 rc.update_rule AS 'on_update',
                 rc.delete_rule AS 'on_delete'
          FROM information_schema.key_column_usage fk
          JOIN information_schema.referential_constraints rc
          USING (constraint_schema, constraint_name)
          WHERE fk.referenced_column_name IS NOT NULL
            AND fk.table_schema = #{schema}
            AND fk.table_name = #{name}
            AND rc.table_name = #{name}
        SQL

        fk_info.map do |row|
          options = {
            column: row['column'],
            name: row['name'],
            primary_key: row['primary_key']
          }

          options[:on_update] = extract_foreign_key_action(row['on_update'])
          options[:on_delete] = extract_foreign_key_action(row['on_delete'])

          ForeignKeyDefinition.new(table_name, row['to_table'], options)
        end
      end

Defined in activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb line 515 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close