工厂女孩没有正确破坏物体

发布于 2024-11-03 23:55:11 字数 435 浏览 3 评论 0原文

我正在创建一个具有多个 has_many 关联的对象。关于构建对象的一切都工作正常,但是当我尝试测试删除子级或父级之一时,它不会反映在测试中。

例如:

 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

我正在测试当没有更多子项时删除基础的文章上 destroy 后的回调。为什么文章关联的大小不减一?

谢谢!

I am creating an object with several has_many associations. Everything with regards tob building the object works fine, but when I try to test the deletion of one of the children or parent, it does not reflect in the test.

For example:

 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

This prints out:

1

1

I am testing the callback after destroy on the article that deletes the base when there are no more children. Why is the size of the articles association not being reduced by one?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不可一世的女人 2024-11-10 23:55:11

您需要重新加载文章集合,因为 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 

You need to reload the articles collection as Rails' database caching is stale:

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 
夜灵血窟げ 2024-11-10 23:55:11

您可以改用articles.count。 “大小”为您提供内存中集合的长度。 Count 执行查询并从数据库获取最新的总数。

You could used articles.count instead. 'Size' gives you the length of the in-memory collection. Count does a query and gets the latest total from the db.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文