在我的Contacts类中,在使用其电子邮件地址创建联系人之后,我尝试尽可能多地从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
答案 0 :(得分:7)
一般来说,问题的解决方案是try
方法(http://apidock.com/rails/Object/try)。为了简化故事 - 如果特定对象上不存在方法
答案 1 :(得分:1)
如果您只想确保保存,可以使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
执行以下操作:
ensure
更多信息: http://blog.rubybestpractices.com/posts/rklemme/003-The_Universe_between_begin_and_end.html