我有一个User对象,它通过两个不同的关联路径与Post对象相关:
说下面的话:
user1.name == "Bill"
post1.comments[1].writer == user1
post1.writer == user1
现在当我从数据库中检索post1及其注释时,我更新了post1.comments [1] .writer,如下所示:
post1.comments[1].writer.name = "John"
我希望post1.writer也等于“John”。但事实并非如此!它仍然等于“比尔”。
所以似乎有一些缓存正在进行,但我不希望这种缓存。我希望Rails足够聪明,只需加载一个名为“Bill”的用户实例;相反,它似乎加载了两个单独的:一个用于每个关联路径。
有人可以解释这是如何工作的,以及我如何处理这些类型的情况“Rails方式”? [编辑]我真的应该用重载声明来丢弃我的代码,比如Slobodan的解决方案建议吗?
答案 0 :(得分:0)
Rails不会“只加载一个用户实例”。评论作家和后期作家是分开的。您必须保存更改并重新加载帖子。