рельсы activerecord принадлежит проблема - не может вставить - PullRequest
0 голосов
/ 26 января 2011

Кажется простым, но с проблемой:

model A
belong_to :B

model B
has_many :A

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

table B:
id,...

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

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

Ответы [ 3 ]

0 голосов
/ 26 января 2011

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

0 голосов
/ 26 января 2011

Вы также должны быть в состоянии сделать newA = B.as.build («как» во множественном числе от a).

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

0 голосов
/ 26 января 2011

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

...