Options for has_and_belongs_to_many

:class_name - specify the class name of the association. Use it only if
that name can’t be inferred from the association name. So
has_and_belongs_to_many :projects will by default be linked to the Project
class, but if the real class name is SuperProject, you’ll have to specify
it with this option.

:join_table - specify the name of the join table if the default based on
lexical order isn’t what you want. WARNING: If you’re overwriting the
table name of either class, the table_name method MUST be declared
underneath any has_and_belongs_to_many declaration in order to work.

:foreign_key - specify the foreign key used for the association. By
default this is guessed to be the name of this class in lower-case and "_id"
suffixed. So a Person class that makes a has_and_belongs_to_many association
will use "person_id" as the default foreign_key.

:association_foreign_key - specify the association foreign key used for
the association. By default this is guessed to be the name of the associated
class in lower-case and "_id" suffixed. So if the associated class is
Project, the has_and_belongs_to_many association will use "project_id" as
the default association foreign_key.

:conditions - specify the conditions that the associated object must meet
in order to be included as a "WHERE" sql fragment, such as "authorized = 1".

:order - specify the order in which the associated objects are returned as
a "ORDER BY" sql fragment, such as "last_name, first_name DESC"

:uniq - if set to true, duplicate associated objects will be ignored by
accessors and query methods

:finder_sql - overwrite the default generated SQL used to fetch the
association with a manual one

:delete_sql - overwrite the default generated SQL used to remove links
between the associated classes with a manual one

:insert_sql - overwrite the default generated SQL used to add links
between the associated classes with a manual one

:extend - anonymous module for extending the proxy, see "Association
extensions".

:include - specify second-order associations that should be eager loaded
when the collection is loaded.

:group: An attribute name by which the result should be grouped. Uses the
GROUP BY SQL-clause.

:limit: An integer determining the limit on the number of rows that should
be returned.

:offset: An integer determining the offset from where the rows should be
fetched. So at 5, it would skip the first 4 rows.

:select: By default, this is * as in SELECT * FROM, but can be changed if
you for example want to do a join, but not include the joined columns.

No comments: