belongs_to
ассоциация ожидает association_id
колонок в это соответствующая таблица. Поскольку автомобили принадлежат пользователю, таблица автомобилей должна иметь столбец user_id
. Это можно сделать двумя способами.
первый, вы можете создать столбец при создании модели
rails g model car user_id:references
или просто добавить user_id после создания модели, как ответ Ричарда Брауна. Будьте осторожны, если вы используете integer
вместо references
, вам нужно будет создать индекс самостоятельно.
rails g migration add_user_id_to_cars user_id:integer
затем в сгенерированной миграции, добавьте
add_index :cars, :user_id
UPDATE:
Как Джозеф упомянул в комментариях, необходимо добавить индекс вручную уже рассматривались в текущей версии Rails. Я думаю, что это было введено в Rails 4. Вы можете узнать больше об этом в official Rails guide for migrations. Суть ее работы следующий генератор
bin/rails g migration add_user_to_cars user:references
создаст миграцию с линией, аналогичной
add_reference :cars, :user, index: true
Это добавит user_id
столбец в таблице автомобилей, и это будет также отметить, что столбец индексироваться.
у вас нет необходимости в 'cars_users' таблицы, так как вы не имеете много-ко-многим. – Zippie