Rails,给定一系列项目,如何在控制台中删除

问题描述 投票:6回答:7

给出以下内容:

@users = User.where(:state => 1)

which 15 for: @users.length

在Rails控制台中,是否可以通过执行@users.delete之类的操作来删除所有这些记录?

ruby-on-rails ruby-on-rails-3
7个回答
5
投票

您的模型类具有a delete method(和delete),可以使用单个ID或ID数组来删除(或销毁)。传递数组将仅发出single destroy method语句,在这种情况下,这是最佳选择。

destroy

请注意,当您在ActiveRecord模型上调用DELETE时,它将在删除记录之前创建该记录的一个实例(因此将运行回调等)。在这种情况下,由于您已经具有完全实例化的对象,因此,如果您确实确实想调用User.delete @users.map { |u| u.id } # or User.destroy @users.map { |u| u.id } (而不是destroy),则使用destroy中的方法并自己对其进行迭代可能会更有效。 >


14
投票
delete

2
投票

delete_all是最简单的方法


1
投票

是:


0
投票

destroy_all或delete_all将执行如下查询:@users.destroy_all,因此它将删除表中的所有记录!不仅是数组中对象的记录!所以我认为最好的方法是@users.each{ |u| u.destroy }


0
投票

全部销毁是最简单的方法。这是语法:


0
投票

[如果有人需要此。在Rails 6中,如果您已经知道要删除的内容,并且想要对许多记录进行有效的删除,则可以使用以下任一方法:

© www.soinside.com 2019 - 2024. All rights reserved.