Как исправить некоторые отношения activerecord - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь исправить некоторые отношения.

У меня три модели, и некоторые отношения работают, другие возвращают ноль или ничего.Первый класс - это бренд.

class Brand < ActiveRecord::Base
  has_and_belongs_to_many :companies, class_name: 'Brand::Company'
  has_many :contacts, class_name: 'Brand::Company'
end

Тогда у меня есть компании.Отношения между брендами и компаниями много-много, поэтому у меня есть таблица соединений.

class Brand::Company < ActiveRecord::Base
  self.table_name = "companies"

  has_many :contacts, class_name: 'Brand::Contact', foreign_key: :company_id
  has_and_belongs_to_many :contacts, class_name: 'Brand::Contact', foreign_key: :company_id, association_foreign_key: :contact_id
  has_and_belongs_to_many :brands, foreign_key: :company_id, association_foreign_key: :brand_id
end

create_table "brands_companies", id: false, force: :cascade do |t|
    t.integer "brand_id",   null: false
    t.integer "company_id", null: false
  end

В конце у меня есть контакты: они принадлежат компании.

  create_table "contacts", force: :cascade do |t|
    t.integer  "company_id",                    null: false
  end

class Brand::Contact < ActiveRecord::Base
  belongs_to :company, class_name: 'Brand::Company'
  has_many :brands, through: :company
end

Brand.first.contacts -> не работает, ошибка возврата

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column companies.brand_id not exist

Brand.first.companies -> работает

Brand.first.companies.first.contacts -> работает

Brand::Company.first.brands ->работает

Brand::Contact.first.company -> не работает

Brand::Contact.first.brand -> не работает

Похоже, у меня что-то не так в ключе таблиц, но яне могу понять, что ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...