From 56c55354661fcadecb1927fb62fb9038d16e9be1 Mon Sep 17 00:00:00 2001 From: Rick Olson Date: Tue, 16 Jan 2007 06:30:02 +0000 Subject: [DOC] clear up some ambiguity with the way has_and_belongs_to_many creates the default join table name. #7072 [jeremymcanally] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5960 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/CHANGELOG | 2 ++ activerecord/lib/active_record/associations.rb | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'activerecord') diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 32d977a11d..ef2263a855 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* [DOC] clear up some ambiguity with the way has_and_belongs_to_many creates the default join table name. #7072 [jeremymcanally] + * change_column accepts :default => nil. Skip column options for primary keys. #6956, #7048 [dcmanges, Jeremy Kemper] * MySQL, PostgreSQL: change_column_default quotes the default value and doesn't lose column type information. #3987, #6664 [Jonathan Viney, manfred, altano@bigfoot.com] diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index f1c274af42..4f251077ed 100755 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -809,7 +809,13 @@ module ActiveRecord # Associates two classes via an intermediate join table. Unless the join table is explicitly specified as # an option, it is guessed using the lexical order of the class names. So a join between Developer and Project - # will give the default join table name of "developers_projects" because "D" outranks "P". + # will give the default join table name of "developers_projects" because "D" outranks "P". Note that this precedence + # is calculated using the < operator for String. This means that if the strings are of different lengths, + # and the strings are equal when compared up to the shortest length, then the longer string is considered of higher + # lexical precedence than the shorter one. For example, one would expect the tables paper_boxes and papers + # to generate a join table name of papers_paper_boxes because of the length of the name paper_boxes, + # but it in fact generates a join table name of paper_boxes_papers. Be aware of this caveat, and use the + # custom join_table option if you need to. # # Deprecated: Any additional fields added to the join table will be placed as attributes when pulling records out through # has_and_belongs_to_many associations. Records returned from join tables with additional attributes will be marked as -- cgit v1.2.3