繁体   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