继续循环通过ResourceNotFound?

时间:2012-08-09 11:32:16

标签: ruby-on-rails ruby api activeresource

我正在循环使用一组用户,作为其中的一部分,我正在调用第三方API(通过Intercom API Ruby wrapper)。

如果内部通信API无法找到用户,则会引发Intercom::ResourceNotFound,并且会停止整个过程。

我只是想让它跳过用户,如果它找不到它。

User.each do |user|
    user = Intercom::User.find_by_email(user.email) # Intercom::ResourceNotFound thrown if not found
    user.custom_data["Example"] = true
    user.save
end

这是Intercom Ruby包装器的问题吗?或者是否有一种典型的Ruby或Rails方式来处理这类事情?

1 个答案:

答案 0 :(得分:3)

如何捕捉异常?

User.each do |user|
  begin
   user = Intercom::User.find_by_email(user.email) # Intercom::ResourceNotFound thrown if not found
   user.custom_data["Example"] = true
   user.save
  rescue Intercom::ResourceNotFound
  end
end

由于您只是想跳过用户(如果找不到)(并且抛出异常),rescue之后就没有错误处理代码。但是如果你想要调试一些调试信息,你可以写一下:

  rescue Intercom::Resource
    puts %{Could not work on user...}
  end