首页
学习
活动
专区
工具
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方法可以解决这个问题,因为它会批量处理记录,并在每个批次之间进行提交,从而确保记录被正确删除。

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

相关·内容

没有搜到相关的视频

领券