automatic_foreign_key 1.2 released
23 January 2011
AutomaticForeignKey allows you to create foreign keys easier than ever.
Particularly lots of migrations doesn’t need any change. Let’s dive into it quickly.
class CreateGroups < ActiveRecord::Migration
def self.up
create_table :groups do |t|
t.string :name, :null => false, :limit => 50
t.integer :user_id, :null => false
t.timestamps :null => false
end
end
def self.down
drop_table :groups
end
end
In that case we’ll have foreign key on groups(user_id) referencing users(id).
But wait a moment. This one looks like ordinary migration. Where did you define foreign key? Well, automatic_foreign_key is smart enough to be predict that user_id column should be referenced to users(id).
Obviously we could customize the behaviour.
# force user_id to reference admins table
t.integer :user_id, :null => false, :references => :admins
# don't create foreign key on application_id column
t.integer :application_id, :references => nil
It’s dead easy, isn’t it?
If you want to see more just go to github page or start using it now!
$ gem install automatic_foreign_key
Let’s take a look at what brings version 1.2 to us.
Rails 3 generator
New generator creates automatic_foreign_key initializer:
$ rails g automatic_foreign_key:install create config/initializers/automatic_foreign_key.rb
Currently 3 options are supported:
- on_update - default ON UPDATE action (available options are :cascade, :restrict, :set_null, :set_default, :no_action)
- on_delete - default ON DELETE action (available options as above)
- auto_index - automatically create indexes on foreign keys
Fixed auto-index when restoring schema
Previously restoring schema may have led to duplicated indexes. Currently the problem is solved.
Upgraded to RSpec 2
Specs are compatible with Rspec 2.4.0.
Bundler instead of Jeweler
Gemspec is maintained by bundler. You can read more about this change on my blog post.