我有一个Foo
模型:has_many bars
,最初我创建并保存了一个名为Foo
的{{1}}实例。看foo
它是空的,如预期的那样。但是在我为foo.bars
实例创建bar
belongs
实例之后。 foo
不应该是空的,但它仍然是空的。如果我foo.bars
,它会按预期返回非空结果。有没有办法Foo.find(foo.id).bars
update
,所以我不必这样做。谢谢!
答案 0 :(得分: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)
。
答案 1 :(得分:0)
问题是第一次调用会缓存foo.bars。您可以使用foo.bars(true)