Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master

This branch is even with olek:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
Failed to load latest commit information.
lib
CHANGELOG
MIT-LICENSE
README
about.yml
init.rb
install.rb

README

= Foreign Key Associations

Foreign Key Associations is a plugin that automatically creates associations
based on foreign-keys. The associations are created at runtime--ie. as your
ActiveRecord models are loaded--so they will always be up-to-date.

For example, given a foreign-key from a +customer_id+ column in an +orders+
table to an +id+ column in a +customers+ table, the plugin creates:

  Order.belongs_to :customer
  Customer.has_many :orders

If there is a uniqueness constraint--eg unique index--on a foreign-key column,
then the plugin will creates a +has_one+ instead of a +has_many+.

For example, given a foreign-key from an +order_id+ column with a uniqueness
constraint in an +invoices+ table to an +id+ column in an +orders+ table, the
plugin creates:

  Invoice.belongs_to :order
  Order.has_one :invoice

Additionally, if there is a +position+ column in the child table, the parent
association will be created with an +order+ clause.

For example, given a foreign-key from a +order_id+ column in an +order_lines+
table containing a +position+ column, to an +id+ column in a +orders+ table,
the plugin creates:

  OrderLine.belongs_to :orders
  Order.has_many :lines, :order => :position

The plugin also supports the creation of +has_and_belongs_to_many+
associations.

For example, given the tables +product_product_categories+ with foreign-keys
to both the +product+ and +product_categories+ tables, the plugin creates:

  Product.has_and_belongs_to_many :categories
  ProductCategory.has_and_belongs_to_many :products

And finally, notice that in one of the previous examples, the association
name used for the <code>Order.has_many</code> is <code>:lines</code> and not
<code>:order_lines</code>. More specifically, the plugin removes the prefix
from +has_many+ and +has_one+ associations if the the name of parent class
forms a proper prefix of the child class name.


The plugin fully supports and understands the following active-record
configuration properties:

* <code>config.active_record.pluralize_table_names</code>
* <code>config.active_record.table_name_prefix</code>
* <code>config.active_record.table_name_suffix</code>

=== Dependencies

* RedHill on Rails Core (redhillonrails_core)

=== See Also

* Foreign Key Migrations (foreign_key_migrations).

=== License

This plugin is copyright 2006 by RedHill Consulting, Pty. Ltd. and is released
under the MIT license.
Something went wrong with that request. Please try again.