Method: QueryBuilder::Query#needs_join_table

Defined in:
lib/query_builder/query.rb

#needs_join_table(table_name1, type, table_name2, clause, join_name = nil) ⇒ Object

Use this method to add a join to another table (added only once for each join name). nodes JOIN idx_nodes_string AS id1 ON … FIXME: can we remove this ? It seems buggy (JOIN in or clauses)



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/query_builder/query.rb', line 160

def needs_join_table(table_name1, type, table_name2, clause, join_name = nil)
  join_name ||= "#{table_name1}=#{type}=#{table_name2}"
  @needed_join_tables[join_name] ||= {}
  @needed_join_tables[join_name][table] ||= begin
    # define join for this part ('table' = unique for each part)

    # don't add to list of tables, just get unique alias name
    second_table = get_alias(table_name2)

    # create join
    first_table = table(table_name1)

    @join_tables[first_table] ||= []
    @join_tables[first_table] << "#{type} JOIN #{second_table} ON #{clause.gsub('TABLE1',first_table).gsub('TABLE2',second_table)}"
    second_table
  end
end