Module: Sequel::Plugins::ManyThroughMany::ClassMethods

Defined in:
lib/sequel/plugins/many_through_many.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) many_through_many(name, through, opts = 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 many_to_many.



203
204
205
# File 'lib/sequel/plugins/many_through_many.rb', line 203

def many_through_many(name, through, opts=OPTS, &block)
  associate(:many_through_many, name, opts.merge(through.is_a?(Hash) ? through : {:through=>through}), &block)
end

- (Object) one_through_many(name, through, opts = OPTS, &block)

Creates a one_through_many association. See many_through_many for arguments.



208
209
210
# File 'lib/sequel/plugins/many_through_many.rb', line 208

def one_through_many(name, through, opts=OPTS, &block)
  associate(:one_through_many, name, opts.merge(through.is_a?(Hash) ? through : {:through=>through}), &block)
end