lib/arel-helpers/join_association.rb
# activerecord uses JoinDependency to automagically generate inner join statements for
# any type of association (belongs_to, has_many, and has_and_belongs_to_many).
# For example, for HABTM associations, two join statements are required.
# This method encapsulates that functionality and yields an intermediate object for chaining.
# It also allows you to use an outer join instead of the default inner via the join_type arg.
activerecord uses JoinDependency to automagically generate inner join statements for
any type of association (belongs_to, has_many, and has_and_belongs_to_many).
For example, for HABTM associations, two join statements are required.
This method encapsulates that functionality and yields an intermediate object for chaining.
It also allows you to use an outer join instead of the default inner via the join_type arg.
activerecord uses JoinDependency to automagically generate inner join statements for any type of association ( belongs_to has_many and has_and_belongs_to_many ) . For example for HABTM associations two join statements are required . This method encapsulates that functionality and yields an intermediate object for chaining . It also allows you to use an outer join instead of the default inner via the join_type arg .
def join_association_4_1(table, association, join_type, options = {})
        aliases = options.fetch(:aliases, {})
        associations = association.is_a?(Array) ? association : [association]
        join_dependency = ActiveRecord::Associations::JoinDependency.new(table, associations, [])
        join_dependency.join_constraints([]).map do |constraint|
          right = if block_given?
            yield constraint.left.name.to_sym, constraint.right
          else
            constraint.right
          end
          if found_alias = find_alias(constraint.left.name, aliases)
            constraint.left.table_alias = found_alias.name
          end
          join_type.new(constraint.left, right)
        end
      end
def join_association_4_1 ( table , association , join_type , options = { } ) aliases = options . fetch ( :aliases , { } ) associations = association . is_a? ( Array ) ? association : [ association ] join_dependency = ActiveRecord :: Associations :: JoinDependency . new ( table , associations , [ ] ) join_dependency . join_constraints ( [ ] ) . map do | constraint | right = if block_given? yield constraint . left . name . to_sym , constraint . right else constraint . right end if found_alias = find_alias ( constraint . left . name , aliases ) constraint . left . table_alias = found_alias . name end join_type . new ( constraint . left , right ) end end
activerecord uses JoinDependency to automagically generate inner join statements for
any type of association (belongs_to, has_many, and has_and_belongs_to_many).
activerecord uses JoinDependency to automagically generate inner join statements for any type of association ( belongs_to has_many and has_and_belongs_to_many ) .
table
association
join_type
options