Sha256: 9bdf554502474d37eafaded78828e77200ccb9c367c8bc04eabef42d42bedaeb

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
  # MySQL5-specific behaviors
  module Mysql5Adapter
    
    def reverse_foreign_keys(table_name, name = nil)
      ans = execute(<<-SQL, name)
      SELECT constraint_name, table_name, column_name, referenced_table_name, referenced_column_name
        FROM information_schema.key_column_usage
       WHERE table_schema = SCHEMA()
         AND referenced_table_schema = table_schema
       ORDER BY constraint_name, ordinal_position;
      SQL
      
      results = []
      ans.each do | row |
        results << [row[0], row[1], row[2], row[3], row[4]]
      end
      current_foreign_key = nil
      foreign_keys = []

      results.each do |row|
        next unless table_name.casecmp(row[3]) == 0
        if current_foreign_key != row[0]
          foreign_keys << ForeignKeyDefinition.new(row[0], row[1], [], row[3], [])
          current_foreign_key = row[0]
        end

        foreign_keys.last.column_names << row[2]
        foreign_keys.last.references_column_names << row[4]
      end

      foreign_keys
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
frolic-redhillonrails_core-0.0.1 lib/red_hill_consulting/core/active_record/connection_adapters/mysql5_adapter.rb