Switch branches/tags
Nothing to show
Find file History
Pull request Compare This branch is even with olek:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


= 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+

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.