method

foreign_keys

Importance_0
v4.2.1 - Show latest stable - 0 notes - Class: SchemaStatements
foreign_keys(table_name) 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/postgresql/schema_statements.rb, line 492
        def foreign_keys(table_name)
          fk_info = select_all             SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete            FROM pg_constraint c            JOIN pg_class t1 ON c.conrelid = t1.oid            JOIN pg_class t2 ON c.confrelid = t2.oid            JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid            JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid            JOIN pg_namespace t3 ON c.connamespace = t3.oid            WHERE c.contype = 'f'              AND t1.relname = #{quote(table_name)}              AND t3.nspname = ANY (current_schemas(false))            ORDER BY c.conname.strip_heredoc

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

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

            ForeignKeyDefinition.new(table_name, row['to_table'], options)
          end
        end
Register or log in to add new notes.