簡體   English   中英

Rails控制台-ActiveRecord :: RecordNotFound

[英]Rails Console - ActiveRecord::RecordNotFound

我正在嘗試從數據庫中刪除大量記錄。 當回調由於ActiveRecord::RecordNotFound而無法銷毀記錄時,我的destroy_all會不斷停止。 當回調試圖刪除的記錄上出現錯誤ActiveRecord::RecordNotFound時,我想跳過回調。

所有用戶記錄都通過UserSchool關系屬於學校。 我正在嘗試刪除所有school_id記錄中出現school_id :74的所有用戶記錄。

user_ids = UserSchool.where(school_id: 74).map(&:user_id)
User.where(id: user_ids).destroy_all  

結果是:

ActiveRecord::RecordNotFound: Couldn't find Comment with 'id'=17

我想跳過該錯誤並繼續銷毀用戶記錄。 我怎么在這里搶救?

user_ids = UserSchool.where(school_id: 74).map(&:user_id)
users = User.where(id: user_ids)

users.each do |user|
  begin 
    user.destroy
  rescue => ActiveRecord::RecordNotFound
    puts "Record not found"
  end
end

我認為我們可以通過將其循環到每個對象上來進行救援。

user_ids.each do |user_id|
 User.find(user_id).destroy rescue nil
end

對於您只能執行的ActiveRecord::RecordNotFound異常,

user_ids.each do |user_id|
  begin 
    Contact.find(user_id).destroy
  rescue => ActiveRecord::RecordNotFound
    puts "Record not found"
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM