2011-05-04 40 views
7

我想刪除一個用戶數組,但是我擁有它的方式是逐個刪除。有沒有更好的方法來做到這一點?Rails 3刪除數組的所有元素

我的代碼是:

@users ||= User.where("clicks_given - clicks_received < ?", -5).to_a 
@users.each do |user| 
    user.destroy 
end 

回答

12

您可以使用Rails的內置方法。請注意,在使用這些方法時,您需要將查詢包裝在數組中(如果要插入變量)。

遍歷每個調用destroy(這將運行回調等):

User.destroy_all(["clicks_given - clicks_received < ?", -5]) 

或單個查詢(在每個項目沒有迭代)只是刪除這些數據庫,你可以這樣做,但請記住,它不會運行你的回調:

User.delete_all(["clicks_given - clicks_received < ?", -5]) 
+0

@dmarkow,我只是更新我的回答與destroy_all以及 - 不試圖複製你的答案。 – McStretch 2011-05-04 21:58:42

+0

無後顧之憂 - 我向你致敬:) – 2011-05-04 21:59:23

+0

而且我也贊成你們倆。但是它說'delete_all'和'destroy_all'不能帶兩個參數。 – 2011-05-04 22:33:39