Ruby on rails 3 Rails 3删除数组的所有元素
我试图删除一组用户,但我的方式是一个接一个地删除。有更好的方法吗 我的代码是:Ruby on rails 3 Rails 3删除数组的所有元素,ruby-on-rails-3,Ruby On Rails 3,我试图删除一组用户,但我的方式是一个接一个地删除。有更好的方法吗 我的代码是: @users ||= User.where("clicks_given - clicks_received < ?", -5).to_a @users.each do |user| user.destroy end @users | |=User.where(“点击给定-点击接收”
@users ||= User.where("clicks_given - clicks_received < ?", -5).to_a
@users.each do |user|
user.destroy
end
@users | |=User.where(“点击给定-点击接收”<?”,-5)。到
@用户。每个do |用户|
用户破坏
结束
您可以使用销毁所有
方法:
User.destroy_all("clicks_given - clicks_received < ?", -5)
它基本上与您的每个调用做相同的事情,但是您可以避免使用锅炉板代码。您可以使用Rails的内置方法。请注意,在使用这些方法时,需要将查询包装在数组中(如果要插入变量) 要迭代调用destroy(将运行回调等)的每个函数,请执行以下操作:
User.destroy\u all([“点击次数给定-点击次数接收”<?,-5])
或者只需在单个查询中删除数据库中的这些项(每个项上都没有迭代),您可以这样做,但请记住它不会运行回调:
User.delete_all(["clicks_given - clicks_received < ?", -5])
User.delete\u all([“点击次数给定-点击次数接收”<?,-5])
@dmarkow,我只是用destroy\u all更新了我的答案,而不是试图复制你的答案。我已经投票给了你们两个。但是它说,delete\u all
和destroy\u all
不能接受两个参数。它正在工作。如果我没有回调,用一个查询消除它们不是更好吗?是的,没有回调、依赖项等,速度会快得多,特别是有很多记录。否则,将为每个记录实例化ActiveRecord对象。
User.destroy_all(["clicks_given - clicks_received < ?", -5])
User.delete_all(["clicks_given - clicks_received < ?", -5])