У меня возникли проблемы с отношениями в Rails 4.has_one belongs_to вопрос отношения в Rails 4
Есть 4 модели
- Пользователь
- Запрос
- Сделать
- Модели
Пользователь has_many Запросы, запрос имеет _one Make и Make has_many Модели.
User-> Requests and Make-> Models has_many отношения прекрасны, но связь Request-> Make has_one не выполняется.
class Request < ActiveRecord::Base
belongs_to :user
has_one :make
end
class Make < ActiveRecord::Base
has_many :models
belongs_to :request
end
Схемы для каждой модели ...
create_table "requests", force: true do |t|
t.integer "user_id"
t.integer "make_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "makes", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
При попытке назначить Марк на запрос я получаю следующую ошибку
Mysql2::Error: Unknown column 'makes.request_id' in 'where clause': SELECT `makes`.* FROM `makes` WHERE `makes`.`request_id` = 7 LIMIT 1
ActiveRecord::StatementInvalid Exception: Mysql2::Error: Unknown column 'makes.request_id' in 'where clause': SELECT `makes`.* FROM `makes` WHERE `makes`.`request_id` = 7 LIMIT 1
nil
Почему ActiveRecord, требующей request_id в Make? Разве это не применимо только для отношений has_many, как у меня в отношениях User-> Requests and Makes-> Models?
Спасибо за вашу помощь! Вы были правы, так как ассоциация была неправильной. Я искал отношения друг к другу, поэтому у меня есть has_many на стороне Make, а не has_one. –