我想刪除一個用戶數組,但是我擁有它的方式是逐個刪除。有沒有更好的方法來做到這一點?Rails 3刪除數組的所有元素
我的代碼是:
@users ||= User.where("clicks_given - clicks_received < ?", -5).to_a
@users.each do |user|
user.destroy
end
我想刪除一個用戶數組,但是我擁有它的方式是逐個刪除。有沒有更好的方法來做到這一點?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)
它基本上和你的每次通話都做同樣的事情,但你可以避免使用boiler-plate代碼。
@dmarkow,我只是更新我的回答與destroy_all以及 - 不試圖複製你的答案。 – McStretch 2011-05-04 21:58:42
無後顧之憂 - 我向你致敬:) – 2011-05-04 21:59:23
而且我也贊成你們倆。但是它說'delete_all'和'destroy_all'不能帶兩個參數。 – 2011-05-04 22:33:39