Я пытаюсь исправить некоторые отношения.
У меня три модели, и некоторые отношения работают, другие возвращают ноль или ничего.Первый класс - это бренд.
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
-> не работает
Похоже, у меня что-то не так в ключе таблиц, но яне могу понять, что ...