作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在我的联系人类中,在使用电子邮件地址创建联系人后,我尝试从 FullContact 的 API 中提取尽可能多的联系人数据。
我遇到了这个问题,如果 FullContact 中的“人”的一列数据不存在,它会抛出一个 NoMethodError 并且我无法将可能存在的其余数据保存到联系,因为我的方法在错误处停止。
我怎样才能从 NoMethodError 中解救出来并让我的方法继续运行它的其余部分?喜欢它跳过错误并尝试其余代码。我已经在救援代码中尝试了 next
和 continue
但这不起作用。
感谢您的帮助。
class Contact < ActiveRecord::Base
belongs_to :user
after_create do |contact|
contact.delay.update_fullcontact_data
end
def update_fullcontact_data
person = FullContact.person(self.email)
if person.contact_info.given_name.present?
self.name = person.contact_info.given_name
end
if person.contact_info.family_name.present?
self.last_name = person.contact_info.family_name
end
if person.demographics.location_general.present?
self.city = person.demographics.location_general
end
save!
rescue NoMethodError => exception
puts "Hit a NoMethodError"
save!
end
end
最佳答案
一般来说,try
方法 ( http://apidock.com/rails/Object/try ) 可能是您问题的解决方案。简而言之——如果特定对象上不存在方法,它会返回 nil 而不是引发异常
关于ruby-on-rails - Rails 4 – 如何从 NoMethodError 中解救并继续尝试方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580012/
我是一名优秀的程序员,十分优秀!