我试图删除用户的数组,但我有它的方式是一个接一个地删除。有更好的方法吗?
我的代码是:@users ||= User.where("clicks_given - clicks_received < ?", -5).to_a
@users.each do |user|
user.destroy
end
您可以使用Rails的内置方法。注意,在使用这些方法时,需要将查询封装在数组中(如果要插入变量)。
遍历每个调用destroy的函数(它将运行回调函数等):
User.destroy_all(["clicks_given - clicks_received < ?", -5])
或者只是在单个查询中删除数据库中的这些(不对每个项进行迭代),您可以这样做,但请记住它不会运行您的回调:
User.delete_all(["clicks_given - clicks_received < ?", -5])
您可以使用destroy_all
方法:
User.destroy_all("clicks_given - clicks_received < ?", -5)
参考:http://apidock.com/rails/v3.0.5/ActiveRecord/Relation/destroy_all
我以前也用过以下语句:
@users.map(&:destroy)
它本质上和你的每次调用做同样的事情,但是你可以避免样板代码。