Need help with immigrant?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

jenseng
466 Stars 19 Forks MIT License 86 Commits 4 Opened issues

Description

Foreign key migration generator for Rails

Services available

!
?

Need anything else?

Contributors list

# 85,749
Ruby
test-co...
Rails
coverag...
65 commits
# 14,363
Ruby
sidekiq
tree-st...
Rails
4 commits
# 696,254
Ruby
HTML
1 commit
# 5,422
Electro...
C++
Arduino
serialp...
1 commit
# 10,685
Ruby
Koa
opam
twilio
1 commit
# 207,738
tree-st...
Rails
activem...
elastic...
1 commit

Immigrant

Immigrant gives Rails a foreign key migration generator so you can effortlessly find and add missing keys. This is particularly helpful when you decide to add keys to an established Rails app.

Installation

Add the following to your Gemfile:

gem 'immigrant'

If you're using a version of Rails prior to 4.2, you'll also need the Foreigner gem.

Usage

rails generate immigration AddKeys

This will create a migration named AddKeys which will have

add_foreign_key
statements for any missing foreign keys. Immigrant infers missing ones by evaluating the associations in your models (e.g.
belongs_to
,
has_many
, etc.). Only missing keys will be added; existing ones will never be altered or removed.

Rake Task

To help you remember to add keys in the future, there's a handy rake task you can add to your CI setup. Just run

rake immigrant:check_keys
, and if anything is missing it will tell you about it and exit with a non-zero status.

Skipping associations

Immigrant.ignore_keys
allows you to specify a list of keys that should be ignored (both in the migration generator and the rake task). This is useful if you have associations spanning databases.

Just create an config/initializers/immigrant.rb file with something like the following:

Immigrant.ignore_keys = [
  { from_table: "users", column: "account_id" },
  # etc
]

Considerations

If the data in your tables is bad, then the migration will fail to run (obviously). IOW, ensure you don't have orphaned records before you try to add foreign keys.

Known Issues

Immigrant currently only looks for foreign keys in

ActiveRecord::Base
's database. So if a model is using a different database connection and it has foreign keys, Immigrant will incorrectly include them again in the generated migration.
Immigrant.ignore_keys
can be used to work around this.

Changelog

License

Copyright (c) 2012-2015 Jon Jensen, released under the MIT license

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.