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

AnA*_*ice 6 ruby-on-rails ruby-on-rails-3

鉴于以下内容:

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

which 15 for: @users.length
Run Code Online (Sandbox Code Playgroud)

在rails控制台中,有没有办法删除所有这些记录,也许是通过做类似的事情@users.delete

fl0*_*00r 14

@users = User.where(:state => 1)
Run Code Online (Sandbox Code Playgroud)

最简单的方法是使用destroy_alldelete_all:

@users.destroy_all
# OR
@users.delete_all
Run Code Online (Sandbox Code Playgroud)

就这样


Mic*_*ley 5

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

User.delete @users.map { |u| u.id }
# or
User.destroy @users.map { |u| u.id }
Run Code Online (Sandbox Code Playgroud)

请注意,当您调用destroyActiveRecord模型时,它将在删除记录之前创建记录的实例(因此将运行回调等)。在这种情况下,由于您已经具有完全实例化的对象,因此,如果您确实要调用destroy(而不是delete),则在J -_- L的答案中使用该方法并自己对其进行迭代可能更有效。