我以下列方式检索一些API信息
fetch_api.each do |api|
save_api = Record.new(name: api.name, height: api.height)
save_api.save!
end
大多数记录都会保存,没问题。但似乎有些人缺少身高和一些名字。这导致NoMethodError使用未定义的方法" height"或"名称"为nil:NilClass,打破循环。
如果单个记录没有价值,我不介意。如何在此之后继续循环?
我试过
if !save_api.save
next
end
没有效果。 (编辑:也尝试在没有&#34的情况下保存;!")。每个区块似乎都不接受rescue
。还有什么?
非常感谢
答案 0 :(得分:0)
fetch_api.each do |api|
if api.name && api.height
save_api = Record.new(name: api.name, height: api.height)
elsif api.name
save_api = Record.new(name: api.name)
elsif
save_api = Record.new(height: api.height)
end
save_api.save!
end
我确信有一种更有说服力的方法可以做到,但我认为这样可行。你也可以使用一个更好的案例陈述,但我不想重写它。
答案 1 :(得分:0)
你可以这样做
Record.new do |record|
if (record.respond_to?(:name) && record.respond_to?(:height))
...
end
答案 2 :(得分:0)
简单地这样做:
fetch_api.each do |api|
save_api = Record.new(name: api && api.name, height: api && api.height)
save_api.save
end