class ActiveRecord::Associations::Builder::HasAndBelongsToMany

def table_name

def table_name
  if options[:join_table]
    options[:join_table].to_s
  else
    class_name = options.fetch(:class_name) {
      association_name.to_s.camelize.singularize
    }
    klass = lhs_model.send(:compute_type, class_name.to_s)
    [lhs_model.table_name, klass.table_name].sort.join("\0").gsub(/^(.*[._])(.+)\0\1(.+)/, '\1\2_\3').tr("\0", "_")
  end
end