Module | Sequel::Plugins::ManyThroughMany::ClassMethods
In: | lib/sequel/plugins/many_through_many.rb

### Methods

many_through_many

### Public Instance methods

many_through_many(name, through, opts={}, &block)

Create a many_through_many association. Arguments:

- name - Same as associate, the name of the association.
- through - The tables and keys to join between the current table and the associated table. Must be an array, with elements that are either 3 element arrays, or hashes with keys :table, :left, and :right. The required entries in the array/hash are:
  - :table (first array element) - The name of the table to join.
  - :left (middle array element) - The key joining the table to the previous table. Can use an array of symbols for a composite key association.
  - :right (last array element) - The key joining the table to the next table. Can use an array of symbols for a composite key association.

  If a hash is provided, the following keys are respected when using eager_graph:

  - :block - A proc to use as the block argument to join.
  - :conditions - Extra conditions to add to the JOIN ON clause. Must be a hash or array of two pairs.
  - :join_type - The join type to use for the join, defaults to :left_outer.
  - :only_conditions - Conditions to use for the join instead of the ones specified by the keys.
- opts - The options for the associaion. Takes the same options as associate, and supports these additional options:
  - :left_primary_key - column in current table that the first :left option in through points to, as a symbol. Defaults to primary key of current table. Can use an array of symbols for a composite key association.
  - :right_primary_key - column in associated table that the final :right option in through points to, as a symbol. Defaults to primary key of the associated table. Can use an array of symbols for a composite key association.
  - :uniq - Adds a after_load callback that makes the array of objects unique.

[Source]

         # File lib/sequel/plugins/many_through_many.rb, line 143
    143:         def many_through_many(name, through, opts={}, &block)
    144:           associate(:many_through_many, name, opts.merge(:through=>through), &block)
    145:         end

[Validate]