我无法解析哈希,然后将某些部分保存到我的数据库中。我能够遍历它以获取我需要的信息。我的问题是更新我的数据库中的记录。我试图根据每个国家/地区的国家/地区代码是否与XML解析中的国家/地区代码匹配来更新数据库中的现有记录。
在我的控制器中我有:
class CountriesController < ApplicationController
def index
@countries = Country.all
travel_alerts = request_data('http://travel.state.gov/_res/rss/TAs.xml')
travel_warnings = request_data('http://travel.state.gov/_res/rss/TWs.xml')
# Sets warnings
warnings_array = travel_warnings["rss"]["channel"]["item"]
warnings_array.each do |warning|
@country = Country.find_by(code: warning["identifier"].strip)
@country.update(title: warning["title"],
description: warning["description"])
end
end
end
...
我尝试过使用.update和.save,但都不行。当我尝试更新时,我得到:
undefined method `update' for nil:NilClass
是否需要在Country模型中明确定义更新方法?如果是这样,那么访问解析信息的最佳方法是什么,因为这些信息是在控制器中完成的?
答案 0 :(得分:1)
它引发了错误,因为找不到给定代码的Country
,然后find_by
返回nil
,其中不存在更新方法。
而不是find_by
executiontrun find_by!
- 您应该ActiveRecord::RecordNotFound error
如果预计某些国家/地区不存在,请将更新语句放在if block
中if @country
@country.update ...
end