MigrationFu
Rails gem / plugin for generating mysql foreign key constraints.
Install
as gem
sudo gem install artemk-migration_fu
or plugin
script/plugin install git://github.com/sleistner/migration_fu.git
Usage
----------------- -----------------
| users | | addresses |
----------------- -----------------
| id | | id |
| username | <---- | user_id |
| password | | street |
----------------- -----------------
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
see http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
arguments: from_table, to_table, options => { :name, :on_delete, :on_update }
add_foreign_key(:addresses, :users, :name => 'fk_add_user')
add_foreign_key(:addresses, :users, :on_delete => :cascade)
add_foreign_key(:addresses, :users, :on_delete => :cascade, :on_update => :cascade)
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users, :force => true do |t|
t.string :username, :null => false
t.string :password, :null => false
end
create_table :addresses, :force => true do |t|
t.references :user
t.string :street, :null => false
end
add_foreign_key(:addresses, :users, :on_delete => :cascade)
end
end