обновление ассоциации модели при добавлении / удалении ассоциации - PullRequest
0 голосов
/ 02 апреля 2012

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

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

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

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).

0 голосов
/ 02 апреля 2012

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

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