Method: ActiveRecord::Migration#add_foreign_key
- Defined in:
- lib/pg_trunk/operations/foreign_keys/add_foreign_key.rb
#add_foreign_key(table, reference, **options) {|k| ... } ⇒ void
This method returns an undefined value.
Create a foreign key constraint
The table and reference of the new key must be set explicitly. All the rest (including the name) can be generated by default:
# same as `..., column: 'role_id', primary_key: 'id'`
add_foreign_key :users, :roles
The block syntax can be used for any argument:
add_foreign_key do |k|
k.table "users"
k.reference "roles"
k.column "role_id" # (generated by default from reference and pk)
k.primary_key "id" # (default)
k.on_update :cascade # :restrict (default)
k.on_delete :cascade # :restrict (default)
k.name "user_roles_fk" # can be generated
k.comment "Phone is 10+ chars long"
end
Composite foreign keys are supported as well:
add_foreign_key "users", "roles" do |k|
k.columns %w[role_name role_id]
k.primary_key %w[name id] # Requires unique index
k.match :full # :partial, :simple (default)
end
The operation is always invertible.
57 |
# File 'lib/pg_trunk/operations/foreign_keys/add_foreign_key.rb', line 57 def add_foreign_key(table, reference, **, &block); end |