2011-01-26 2 views
0

кажется простым, но возникла проблема:рельсы ActiveRecord проблема belongs_to - не может вставить

model A 
belong_to :B 

model B 
has_many :A 

database tables: 
table A: 
id,...,b_id 

table B: 
id,... 

При попытке создать новый A, я поставил (существующий) B, выполнив: аб = B

Я получаю сообщение об ошибке «b не может быть пустым»

+2

Как думают, чтобы иметь в виду будущие вопросы SO, вы можете назвать ваши примеры таблицами что-то несколько менее запутанное, чем «B» и «A», чтобы сделать ответы более легкими для чтения и легче писать. – glenatron

+0

ОК. Спасибо за ответ. Я использовал A и B, так что я не получаю ответы, такие как «люди должны быть людьми». – qali

ответ

0

Вместо того, чтобы делать ab = B, do a.b_id = B.id.

+0

Когда я это сделал, он сказал, что «Bs (plural) не может быть пустым» – qali

+0

Тогда что-то действительно не так с вашим кодом при сохранении A и получении ошибки от B. –

0

Подумайте, как работают ваши коллекции и отношения между родителями и детьми. Вы можете - предположили - добавить идентификатор соответствующего B к вашему A, но вы также можете сказать B.a[] = a, который добавит «a» в вашу коллекцию «a» вашего объекта «B». Таким образом, отношения устанавливаются более интуитивным способом, ориентированным на родительский объект, а не на ребенка.

0

Вы также должны сделать newA = B.as.build ('as', являющийся множественным числом a).

Конечно, ваши примеры «A, a, B и b» очень сбивают с толку! В будущем используйте «клиент» & 'заказать' или 'блог' & 'post' или что-нибудь, но загадочные буквы без значения.

+0

Отмечено. Как я уже сказал выше, я не хотел получать ответы о плюрализации. Я буду помнить об этом в будущем – qali

Смежные вопросы