оцепенение делегатов - PullRequest
       7

оцепенение делегатов

2 голосов
/ 05 марта 2010

Я оформил счет подмножества? Метод
subset.stub (: оплата?) and_return (правда)

.

line_item имеет делегата для выставления счета? подмножество выставлено?

когда я вызываю методы, происходит следующее

(rdb:1) subset.billed?  
true  
(rdb:1) subset.line_items[0].billed?  
false  
(rdb:1) subset === subset.line_items[0].order_subset  
true  
(rdb:1) subset.billed? == subset.line_items[0].subset.billed?  
false  

при первом звонке работает
на втором я вызываю метод выставления счета по делегированному отношению, и тупик терпит неудачу
на третьем я проверяю, являются ли подмножество и вложенный элемент отношения line_item одной и той же моделью, и его истинное значение
на четвертом я сравниваю выходные данные того же метода, который вызывается непосредственно для подмножества и косвенно для отношения, и это не удается

есть ли у кого-нибудь такое?

1 Ответ

1 голос
/ 30 марта 2010

subset и subset.line_items [0] .order_subset действительно разные объекты. === с двумя объектами заканчивается использованием следующей логики:

http://github.com/rails/rails/blob/master/activerecord/lib/active_record/base.rb#L1906-1910

Чтобы понять, что я имею в виду, запустите:

subset.object_id == subset.line_items[0].order_subset.object_id

Вы увидите, что вы ошибаетесь.

Это в некоторой степени проблема с activerecord. Если у вас есть обратные ассоциации, а не ссылка на уже загруженную модель, он загружает совершенно новую копию записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...