Rails 3删除数组的所有元素



我试图删除用户的数组,但我有它的方式是一个接一个地删除。有更好的方法吗?

我的代码是:
@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)

它本质上和你的每次调用做同样的事情,但是你可以避免样板代码。

相关内容

  • 没有找到相关文章

最新更新