我正在创建一个具有多个has_many关联的对象。关于tob构建对象的所有内容都可以正常工作,但是当我尝试测试其中一个子节点或父节点的删除时,它并没有反映在测试中。
例如:
base_article = Factory(:base_article, :articles => [Factory(:article)])
p base_article.articles.size
base_article.articles.first.destroy
p base_article.articles.size
base_article.destroyed?.should == true
打印出来:
1
1
我正在测试销毁后对没有更多子项时删除基础的文章的回调。为什么文章关联的大小没有减少一个?
谢谢!
答案 0 :(得分:5)
当Rails的数据库缓存过时时,您需要重新加载文章集合:
base_article = Factory(:base_article, :articles => [Factory(:article)])
base_article.articles.size # => 1
base_article.articles.first.destroy
base_article.articles.size # => 1
base_article.articles.reload.size # => 0
base_article.destroyed?.should == true
答案 1 :(得分:0)
您可以使用articles.count代替。 'Size'为您提供内存中集合的长度。 Count执行查询并从db获取最新的总数。