2012-04-02 2 views
0

У меня есть модель Foo, которая :has_many bars, изначально создаю и сохраняю Foo экземпляр foo. Глядя на foo.bars, он пуст, как ожидалось. Но после того, как я создаю экземпляр bar, который belongs соответствует экземпляру foo. foo.bars больше не должно быть пустым, но оно все равно. Если я делаю Foo.find(foo.id).bars, он возвращает непустой результат, как ожидалось. Есть ли способ до updatefoo, так что мне не нужно это делать. Благодаря!обновление ассоциации модели при добавлении/удалении ассоциации

ответ

0

Проблема в том, что foo.bars был бы кэширован первым вызовом. Вы можете заставить его обновиться с помощью foo.bars(true)

2

Это, вероятно, происходит из-за кеширования.

foo = Foo.create! #=> executes sql, and caches the result 
foo #=> retrieved from cache 
foo.bars << Bar.create #=> creates the bar, and associates it with the foo instance 
foo.bars #=> retrieves the bars from cache, so it's [] 
Foo.find(foo.id).bars #=> executes sql, and returns [<bar# id: 1>] 

Чтобы обойти это, вы просто создать новый экземпляр Foo, или просто перезагрузить его:

foo.reload 

Или foo.bars(true).

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