Вот пример того, что у меня сейчас есть:
#app/models/company.rb
class Company < ApplicationRecord
has_one :platform
end
.
#app.models/platform.rb
class Platform < ApplicationRecord
has_and_belongs_to_many :companies
end
и у меня также есть миграция, которая создала таблицу соединений для связи платформы с несколькими компаниями
class CreateJoinTableCompanyPlatforms < ActiveRecord::Migration[5.1]
def change
create_join_table :companies, :platforms do |t|
t.index [:company_id, :platform_id]
t.index [:platform_id, :company_id]
end
end
end
Однако, когда я перехожу к своему виду и пытаюсь вызвать Company.first.platform
, я получаю эту ошибку:
ActionView :: Template :: Error (Mysql2 :: Ошибка: неизвестный столбец
'platform.company_id' в 'предложении where': SELECT platforms
. * FROM
platforms
ГДЕ platforms
. company_id
= 1 ПРЕДЕЛ 1):
Есть ли проблема с моей таблицей соединений или я не могу построить свои модели таким образом?
Если я изменю свой has_one :platform
на has_and_belongs_to_many :platforms
, тогда он отлично работает, поэтому я должен что-то упустить, или это может быть не лучшим способом сделать это.
Моя причина использования has_one
состояла в том, что каждый раз, когда я звонил company
, я не хотел указывать company.platforms.first.name
, а просто набрал бы company.platform.name
, так как в любом случае он должен быть только один.