I'm trying to deploy my app for the first time in heroku and I'm encountering a weird bug. When I try to run heroku rake db:migrate, i see this error :
rake aborted! StandardError: An error has occurred, this and all later migrations canceled:
PG::UndefinedTable: ERROR:  relation "companies" does not exist
: CREATE TABLE "users" ("id" bigserial primary key, "admin" boolean DEFAULT 'f', "admin_c" boolean DEFAULT 'f', "color" character varying, "initial" character varying, "name" character varying, "surname" character varying, "pseudo" character varying, "step" integer, "company_id" bigint, "email" character varying DEFAULT '' NOT NULL, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, CONSTRAINT "fk_rails_7682a3bdfe"
FOREIGN KEY ("company_id")
  REFERENCES "companies" ("id")
)
I have verified a thousand times my migrations files Users & Companies but nothing seems bad. So I really don't know what to do. I also try all the database reset etc.. Like in this answer for example. But nothing is working for me. Anyone have seen this before ?? I'm really desperate at this point.
PS: And I also remove made the pg and sql3 changes.
So I give you my code if it can be useful to discover the problem
Company_model :
class Company < ApplicationRecord
  has_many :users, dependent: :destroy
  has_many :groups, dependent: :destroy
end
User_model :
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  belongs_to :company, optional: true
  has_many :users_group, dependent: :destroy
  has_many :groups, through: :users_group
  has_many :users_post, dependent: :destroy
  has_many :posts, through: :users_post
  has_many :tasks_users, dependent: :destroy
  has_many :tasks, through: :tasks_users
  has_many :requests, dependent: :destroy
  has_many :groupes_admin, dependent: :destroy
  has_many :posts, dependent: :destroy
  has_many :comments, dependent: :destroy
  has_many :tasks, dependent: :destroy
end
Company migration :
class CreateCompanies < ActiveRecord::Migration[5.1]
  def change
    create_table :companies do |t|
      t.string :name
      t.string :ref
      t.timestamps
    end
  end
end
Devise migration :
class DeviseCreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.boolean :admin, default: false
      t.boolean :admin_c, default: false
      t.string :color
      t.string :initial
      t.string :name
      t.string :surname
      t.string :pseudo
      t.integer :step
      t.references :company, index: true, foreign_key: true
      t.boolean :admin, default: false
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at
      ## Rememberable
      t.datetime :remember_created_at
      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip
      t.timestamps null: false
    end
    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
  end
end
Schema :
ActiveRecord::Schema.define(version: 20170727071936) do
  create_table "comments", force: :cascade do |t|
    t.string "content"
    t.boolean "done"
    t.integer "post_id"
    t.integer "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["post_id"], name: "index_comments_on_post_id"
    t.index ["user_id"], name: "index_comments_on_user_id"
  end
  create_table "companies", force: :cascade do |t|
    t.string "name"
    t.string "ref"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end
  create_table "groupes_admins", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.index ["group_id"], name: "index_groupes_admins_on_group_id"
    t.index ["user_id"], name: "index_groupes_admins_on_user_id"
  end
  create_table "groups", force: :cascade do |t|
    t.string "name"
    t.integer "cat"
    t.boolean "main"
    t.boolean "perso"
    t.integer "effectif", default: 0
    t.integer "elm", default: 0
    t.integer "elm_d", default: 0
    t.integer "date_cat"
    t.integer "date_id"
    t.datetime "date"
    t.integer "company_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["company_id"], name: "index_groups_on_company_id"
  end
  create_table "posts", force: :cascade do |t|
    t.text "content"
    t.boolean "attached"
    t.integer "attached_cat"
    t.integer "attached_id"
    t.boolean "done"
    t.datetime "done_at"
    t.integer "done_cat"
    t.integer "donner_id"
    t.datetime "upd_at"
    t.integer "upd_cat"
    t.integer "updater_id"
    t.string "title"
    t.date "deadline"
    t.integer "group_id"
    t.integer "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["group_id"], name: "index_posts_on_group_id"
    t.index ["user_id"], name: "index_posts_on_user_id"
  end
  create_table "requests", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.datetime "validate_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["group_id"], name: "index_requests_on_group_id"
    t.index ["user_id"], name: "index_requests_on_user_id"
  end
  create_table "subtasks", force: :cascade do |t|
    t.string "title"
    t.datetime "date"
    t.boolean "finished"
    t.datetime "done_at"
    t.integer "done_id"
    t.integer "assign_id"
    t.integer "task_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["task_id"], name: "index_subtasks_on_task_id"
  end
  create_table "tasks", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.integer "post_id"
    t.string "title"
    t.datetime "date"
    t.boolean "done"
    t.integer "doner_id"
    t.datetime "done_at"
    t.boolean "assigned"
    t.integer "elm", default: 0
    t.integer "elm_d", default: 0
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["group_id"], name: "index_tasks_on_group_id"
    t.index ["post_id"], name: "index_tasks_on_post_id"
    t.index ["user_id"], name: "index_tasks_on_user_id"
  end
  create_table "tasks_users", force: :cascade do |t|
    t.integer "task_id"
    t.integer "user_id"
    t.index ["task_id"], name: "index_tasks_users_on_task_id"
    t.index ["user_id"], name: "index_tasks_users_on_user_id"
  end
  create_table "users", force: :cascade do |t|
    t.boolean "admin", default: false
    t.boolean "admin_c", default: false
    t.string "color"
    t.string "initial"
    t.string "name"
    t.string "surname"
    t.string "pseudo"
    t.integer "step"
    t.integer "company_id"
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer "sign_in_count", default: 0, null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string "current_sign_in_ip"
    t.string "last_sign_in_ip"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["company_id"], name: "index_users_on_company_id"
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end
  create_table "users_groups", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.index ["group_id"], name: "index_users_groups_on_group_id"
    t.index ["user_id"], name: "index_users_groups_on_user_id"
  end
  create_table "users_posts", force: :cascade do |t|
    t.integer "post_id"
    t.integer "user_id"
    t.index ["post_id"], name: "index_users_posts_on_post_id"
    t.index ["user_id"], name: "index_users_posts_on_user_id"
  end
end
 
     
    