首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么不MyModel.all.each {| m | m.destroy}按预期工作?

这个问题是关于Ruby on Rails中的数据库操作。在Ruby on Rails中,Model.all返回一个包含所有模型记录的数组。当你使用each方法遍历这个数组时,你实际上是在遍历一个数组,而不是数据库查询。因此,当你尝试使用m.destroy方法删除记录时,它并不会立即删除数据库中的记录。

为了解决这个问题,你可以使用find_each方法,它会批量处理记录,并在每个批次之间进行提交。这样,在处理每个批次时,你可以确保记录已经被删除。你可以使用以下代码来替换原始代码:

代码语言:ruby
复制
MyModel.find_each { |m| m.destroy }

这将按预期工作,并删除所有MyModel记录。

总之,原始代码不能按预期工作,因为它试图在遍历数组时立即删除数据库记录。使用find_each方法可以解决这个问题,因为它会批量处理记录,并在每个批次之间进行提交,从而确保记录被正确删除。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • AS3 mvc应用

    在程序开发中,为了降低程序的耦合度,我们经常会对程序进行模式化,这一节中,我们介绍MVC的设计模式,MVC由三层结构构成,分别是视图器(view),模型器(model),控制器(control)。视图器view的作用是显示对象,即我们肉眼看到的元素。而视图器需要的数据我们把它放到模型器model里,那如何操作这些数据呢,这便涉及到我们的逻辑,我们把这部分的程序放进控制器control里。所以,实际上是控制器control在操作模型器model,使其发生数据的改变,而引起model发出相应的事件,视图器view侦听到这些事件时相应的改变视图。应用MVC的结构可以让我们的程序更加有条理更加清晰。下面是一个MVC的小例子。由三个类跟一个文档类构成:

    02
    领券