Module: PgPower::ConnectionAdapters::Table::ForeignerMethods

Included in:
PgPower::ConnectionAdapters::Table
Defined in:
lib/pg_power/connection_adapters/table/foreigner_methods.rb

Overview

Provides methods to extend ActiveRecord::ConnectionAdapters::Table to support foreign keys feature.

Instance Method Summary collapse

Instance Method Details

#foreign_key(to_table, options = {}) ⇒ Object

Adds a new foreign key to the table. to_table can be a single Symbol, or an Array of Symbols. See SchemaStatements#add_foreign_key

Examples
Creating a simple foreign key

t.foreign_key(:people)

Defining the column

t.foreign_key(:people, :column => :sender_id)

Creating a named foreign key

t.foreign_key(:people, :column => :sender_id, :name => ‘sender_foreign_key’)

Defining the column of the to_table.

t.foreign_key(:people, :column => :sender_id, :primary_key => :person_id)



16
17
18
# File 'lib/pg_power/connection_adapters/table/foreigner_methods.rb', line 16

def foreign_key(to_table, options = {})
  @base.add_foreign_key(@table_name, to_table, options)
end

#references_with_foreign_keys(*args) ⇒ Object

Deprecated



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/pg_power/connection_adapters/table/foreigner_methods.rb', line 40

def references_with_foreign_keys(*args)
  options = args.extract_options!

  if options.delete(:foreign_key)
    p ActiveSupport::Deprecation.send(:deprecation_message, caller,
      ":foreign_key in t.references is deprecated. " \
      "Use t.foreign_key instead")
  end

  references_without_foreign_keys(*(args.dup << options))
end

#remove_foreign_key(options) ⇒ Object

Remove the given foreign key from the table.

Examples
Remove the suppliers_company_id_fk in the suppliers table.

change_table :suppliers do |t| t.remove_foreign_key :companies end

Remove the foreign key named accounts_branch_id_fk in the accounts table.

change_table :accounts do |t| t.remove_foreign_key :column => :branch_id end

Remove the foreign key named party_foreign_key in the accounts table.

change_table :accounts do |t| t.remove_index :name => :party_foreign_key end



35
36
37
# File 'lib/pg_power/connection_adapters/table/foreigner_methods.rb', line 35

def remove_foreign_key(options)
  @base.remove_foreign_key(@table_name, options)
end