0

我正在使用 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_fixtures

def update_fixtures #rake task method
 Fixture.destroy_all
 get_fixtures.each {|match| Fixture.create(home_team: match, away_team: match )}
end

尝试此操作后,相同的数据将发布到主队和客队列。在回读后我可以看到原因(我认为这是因为比赛只获取了 home_team 数据?)。我如何将客队的属性与主队一起传递?

这都是非常新的,因此感谢您提供的任何帮助

4

1 回答 1

1

这不是正确的方法,因为变量home_teamaway_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
于 2013-03-12T14:53:43.860 回答