2012-10-10 95 views
29

如何在Rails的方式写的所有记录? 我有一个模特 - 经理。 我想从满足manager_level是5导轨 - 删除满足条件

感谢您的条件经理删除所有记录。

回答

58

我认为这是更好地使用破坏,而不是删除:

Manager.where(:manager_level => 5).destroy_all 
+5

绝对有效,但请记住:“通过实例化每条记录并调用其销毁方法来破坏匹配条件的记录。” (http://apidock.com/rails/ActiveRecord/Relation/destroy_all)对于大型结果集,这可能会很慢。 –

+0

是的,我想保持模型一致和东西。 – MurifoX

+4

@MurifoX - 你能解释一下为什么你认为销毁比删除更好吗?不一定意见不一,但它会帮助你的答案更完整。 –

12

这应该工作:

Manager.where(:manager_level => 5).delete_all 

注意:这不会删除相关记录。

23

试试这个:

Manager.delete_all(manager_level: 5) 
+0

1.我需要使用一个变量来指定要删除的内容。 2.该表没有索引,它是其他两个表之间的连接器表。 –

+0

没有为我工作。由于参照完整性而出现错误。 –

+0

这应该是被接受的答案,因为其他查询在DELETING之前试图选择 - 导致大数据集上的性能问题。 – toobulkeh