gpt4 book ai didi

ruby-on-rails - Rails 4 – 如何从 NoMethodError 中解救并继续尝试方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:46:10 26 4
gpt4 key购买 nike

在我的联系人类中,在使用电子邮件地址创建联系人后,我尝试从 FullContact 的 API 中提取尽可能多的联系人数据。

我遇到了这个问题,如果 FullContact 中的“人”的一列数据不存在,它会抛出一个 NoMethodError 并且我无法将可能存在的其余数据保存到联系,因为我的方法在错误处停止。

我怎样才能从 NoMethodError 中解救出来并让我的方法继续运行它的其余部分?喜欢它跳过错误并尝试其余代码。我已经在救援代码中尝试了 nextcontinue 但这不起作用。

感谢您的帮助。

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com