我正在使用Nokogiri从网页上获取数据,到目前为止我可以保存到模型中的一列
def update_fixtures #rake task method
Fixture.destroy_all
get_fixtures.each {|match| Fixture.create(home_team: match )}
end
def get_fixtures # Get me all Home Teams
doc = Nokogiri::HTML(open(FIXTURE_URL))
home_team = doc.css(".team-home.teams").map {|h| h.text.strip }
end
我想知道的是同时保存到2,3或4个柱子的最有效方法
作为一个例子,我有另一个名为away_team的专栏,我将以与主队相同的方式对该数据进行评分
away_team = doc.css(".team-away.teams").map {|a| a.text.strip }
建议将它放在get_fixtures方法中吗?然后使用类似
的内容添加到update_fixturesdef update_fixtures #rake task method
Fixture.destroy_all
get_fixtures.each {|match| Fixture.create(home_team: match, away_team: match )}
end
尝试此操作后,相同的数据会被发布到主页和离开的列。回读后我可以看到原因(我认为这是因为匹配只是抓住home_team数据?)。我怎样才能将客队的属性与主队一起传递?
这一切都非常新,所以提供的任何帮助都表示赞赏
答案 0 :(得分:1)
这不是正确的方法,因为变量home_team
和away_team
都使用相同的公共match
,因此您获得两者的相同数据。
执行以下操作:
更新:
您的型号:
attr_accessible :home_team, :away_team
def update_fixtures #rake task method
Fixture.destroy_all
doc = Nokogiri::HTML(open(FIXTURE_URL))
home_team = doc.css(".team-home.teams").map {|h| h.text.strip }
away_team = doc.css(".team-away.teams").map {|a| a.text.strip }
Fixture.create(home_team: home_team, away_team: away_team)
end