添加/删除关联时更新模型的关联

时间:2012-04-02 06:31:26

标签: ruby-on-rails ruby

我有一个Foo模型:has_many bars,最初我创建并保存了一个名为Foo的{​​{1}}实例。看foo它是空的,如预期的那样。但是在我为foo.bars实例创建bar belongs实例之后。 foo不应该是空的,但它仍然是空的。如果我foo.bars,它会按预期返回非空结果。有没有办法Foo.find(foo.id).bars update,所以我不必这样做。谢谢!

2 个答案:

答案 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)

强制刷新它