给出以下内容:
@users = User.where(:state => 1)
which 15 for: @users.length
在Rails控制台中,是否可以通过执行@users.delete
之类的操作来删除所有这些记录?
您的模型类具有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
中的方法并自己对其进行迭代可能会更有效。 >
delete
delete_all
是最简单的方法
是:
destroy_all或delete_all将执行如下查询:@users.destroy_all
,因此它将删除表中的所有记录!不仅是数组中对象的记录!所以我认为最好的方法是@users.each{ |u| u.destroy }
全部销毁是最简单的方法。这是语法:
[如果有人需要此。在Rails 6中,如果您已经知道要删除的内容,并且想要对许多记录进行有效的删除,则可以使用以下任一方法: